C言語では文字列から特定の部分を切り出す方法がいくつかあります。
この記事ではその中でも代表的な手法であるstrncpyやsubstr、strtokを利用した方法について解説します。
初心者の方でも理解しやすいように簡潔に説明します。
strncpyで文字列を文字数で切り出し
strncpyは指定された文字数まで文字列をコピーする関数です。
以下はこの関数を使用して文字列から数を切り出す方法の例です。
#include <stdio.h>
#include <string.h>
int main() {
char source[] = "12345ABCDE";
char destination[6]; // 切り出す数の分だけの配列を用意
// 文字列から5文字分切り出す
strncpy(destination, source, 5);
// 切り出した文字列を表示
printf("切り出した数:%s\n", destination);
return 0;
}
このプログラムは、sourceから5文字分をdestinationにコピーしています。
substrで文字列を文字数で切り出し
substrは標準のC言語ライブラリには存在せず一部のライブラリや関数群で提供されています。
以下はsubstrを使った例です。
#include <stdio.h>
#include <string.h>
// substr関数の定義(サンプル)
char* substr(const char* src, size_t start, size_t len, char* dest) {
strncpy(dest, src + start, len);
dest[len] = '#include <stdio.h>
#include <string.h>
// substr関数の定義(サンプル)
char* substr(const char* src, size_t start, size_t len, char* dest) {
strncpy(dest, src + start, len);
dest[len] = '\0'; // 文字列の終端を設定
return dest;
}
int main() {
char source[] = "12345ABCDE";
char destination[6]; // 切り出す数の分だけの配列を用意
// 文字列から5文字分切り出す
substr(source, 0, 5, destination);
// 切り出した文字列を表示
printf("切り出した数:%s\n", destination);
return 0;
}
'; // 文字列の終端を設定
return dest;
}
int main() {
char source[] = "12345ABCDE";
char destination[6]; // 切り出す数の分だけの配列を用意
// 文字列から5文字分切り出す
substr(source, 0, 5, destination);
// 切り出した文字列を表示
printf("切り出した数:%s\n", destination);
return 0;
}
広告
strtokで文字列を文字数で切り出し
strtokは文字列を指定されたデリミタ(区切り文字)で分割する関数です。
以下はstrtokを使用して数を切り出す例です。
#include <stdio.h>
#include <string.h>
int main() {
char source[] = "123,45,ABCDE";
char* token;
// 最初のトークンを取得
token = strtok(source, ",");
// 2回目以降のトークンを取得
while (token != NULL) {
// 切り出した数を表示
printf("切り出した数:%s\n", token);
token = strtok(NULL, ",");
}
return 0;
}
このプログラムでは、,をデリミタとして数を切り出しています。
ガマくん
文字列の前後から切り出したい場合は以下記事を参考にしてみてね
[C言語]後ろから文字列を切り出し!前から抽出する方法についても
C言語において文字列を効果的に操作する方法は非常に重要です。この記事では文字列を前から・後ろから切り出す方法について解説します。初心者の方にも理解しやすいように基本的な手法を取り上げます。
広告
まとめ
いくつかの方法を紹介しましたがどの方法を選ぶかは状況や要件によります。
各関数の特徴を理解し使い分けることが大切です。
初心者の方も是非実際にコードを書きながら理解を深めてみてください。