どうも、ちょげ(@chogetarou)です。
文字列(string)の先頭からN文字を取得する方法を紹介します。
方法

文字列(string)の先頭からN文字を取得する方法は、3つあります。
for文
1つ目は、for文を使う方法です。
まず、文字列の変数を用意します。
取得する文字数(N)でループします。
そして、ループ処理で、「用意した変数のループ変数のインデックスの要素」に「対象の文字列のループ変数のインデックスの要素」を代入します。
//text=対象の文字列, N=取得する文字数
char result[N]; //結果を格納する変数
for (int i = 0; i < N; ++i) {
result[i] = text[i];
}
上記のfor文は、用意した変数に対象の文字列の先頭からN文字を格納します。
使用例
#include <stdio.h>
#include <string.h>
int main(void){
char text[] = "Hello,World";
int N = 5;
char result[N];
for (int i = 0; i < N; ++i) {
result[i] = text[i];
}
printf("%s", result);
return 0;
}
出力:
Hello
memcpy()
2つ目は、memcpy()を使う方法です。
まず、文字列の変数を用意します。
次に、memcpy()を呼び出します。
memcpy()の第1引数に用意した変数、第2引数に対象の文字列指定します。
そして、memcpy()の第3引数に取得する文字数(N)を指定します。
//text=対象の文字列, N=取得する文字数
char result[N];
memcpy(result, text, N);
上記のmemcpy()は、用意した変数に対象の文字列の先頭からN文字を格納します。
使用例
#include <stdio.h>
#include <string.h>
int main(void){
char text[] = "Hello,World";
int N = 5;
char result[N];
memcpy(result, text, N);
printf("%s", result);
return 0;
}
出力:
Hello
strncpy()
3つ目は、strncpy()を使う方法です。
まず、文字列の変数を用意します。
次に、strncpy()を呼び出します。
strcpy()の第1引数に用意した変数、第2引数に対象の文字列指定します。
そして、strncpy()の第3引数に取得する文字数(N)を指定します。
//text=対象の文字列, N=取得する文字数
char result[N];
strncpy(result, text, N);
上記のstrncpy()は、用意した変数に対象の文字列の先頭からN文字を格納します。
使用例
#include <stdio.h>
#include <string.h>
int main(void){
char text[] = "Hello,World";
int N = 5;
char result[N];
strncpy(result, text, N);
printf("%s", result);
return 0;
}
出力:
Hello
まとめ
文字列(string)の先頭からN文字を取得する方法は、次の3つです。
- for文を使う方法
char result[N];
for (int i = 0; i < N; ++i) { result[i] = text[i]; }
- memcpy()を使う方法
char result[N];
memcpy(result, text, N);
- strncpy()を使う方法
char result[N];
strncpy(result, text, N);
コメント