[C言語]文字列の後ろからN文字を取得するには?

C言語

どうも、ちょげ(@chogetarou)です。

文字列(string)の後ろからN文字を取得する方法を紹介します。

スポンサーリンク

方法

文字列(string)の後ろからN文字を取得する方法は、2つあります。

for文

ひとつは、for文を使う方法です。

まず、文字列の変数を用意します。

for文で対象の文字列の文字数でループします。

for文のループ変数は、初期値「0」と初期値「文字数をNで引いた値」の2つを用意します。

また、ループ後の処理で、2つの変数を「+1」します。

そして、ループ処理で、「用意した変数の1つ目のループ変数のインデックスの要素」に「対象の文字列の2つ目のループ変数のインデックスの要素」を代入します。

//text=対象の文字列, N=取得する文字数
int length = strlen(text); //文字列の文字数
char result[N]; //結果を格納する変数
for (int i = 0, j = length - N; i < length; ++i, ++j) {
    result[i] = text[j];
}

上記のfor文は、用意した変数に対象の文字列の後ろからN文字を格納します。

使用例

#include <stdio.h>
#include <string.h>

int main(void){
    char text[] = "Hello,World";
    
    int length = strlen(text);
    int N = 5;
    int position = length - N;
    
    char result[N];
    for (int i = 0, j = position; i < length; ++i, ++j) {
        result[i] = text[j];
    }
    
    printf("%s", result);
    
    return 0;
}
出力:
World

strcpy()

もうひとつは、strcpy()を使う方法です。

まず、文字列の変数を用意します。

また、文字列の文字数を「N」で引いた位置を取得します。

次に、strcpy()を呼び出します。

そして、strcpy()の第1引数に用意した変数、第2引数に「対象の文字列に取得した位置を足した値」を指定します。

//text=対象の文字列, N=取得する文字数
int length = strlen(text); //文字列の文字数
int position = length - N; //位置
char result[N + 1];
strcpy(result, text + position);

上記のstrcpy()は、用意した変数に対象の文字列の後ろからN文字を格納します。

使用例

#include <stdio.h>
#include <string.h>

int main(void){
    char text[] = "Hello,World";
    
    int length = strlen(text);
    int N = 5;
    int position = length - N;
    
    char result[N + 1];
    strcpy(result, text + position);
    
    printf("%s", result);
    
    return 0;
}
出力:
World

まとめ

文字列(string)の後ろからN文字を取得する方法は、次の2つです。

  • for文を使う方法
    int length = strlen(text);
    char result[N];
    for (int i = 0, j = length - N; i < length; ++i, ++j) { result[i] = text[j]; }
  • rbegin()を使う方法
    int length = strlen(text);
    int position = length - N;
    char result[N + 1];
    strcpy(result, text + position);

コメント

タイトルとURLをコピーしました