HOWTO · C
C 言語でサブストリングを取得する
このチュートリアルでは、char から部分文字列を取得するための C 言語の異なるメソッドを紹介します。このチュートリアルでは、C 言語での memcpy()と strncpy()関数の使用について説明します。
このページの内容
このチュートリアルでは、C 言語で文字の値から部分文字列を取得する方法を紹介します。文字から部分文字列を取得する方法には、memcpy() や strncpy() のような異なる方法があります。
C 言語で部分文字列を取得するための memcpy() 関数
関数 memcpy() は文字数をコピー元からコピー先のメモリ領域にコピーします。この関数は <string.h> ヘッダファイルで利用できます。
この関数は、コピー元とコピー先のアドレスが重複している場合に問題を生じる。この関数は NULL アドレスがあるかどうかやオーバーフローが発生しているかどうかはチェックしません。
関数 memcpy() は出力先の文字列へのポインタを返します。エラーを表示するための戻り値はありません。
memcpy() の構文
void *memcpy(void *destination_string, const void *source_string,
size_t number);
destination_stringは出力先の文字列へのポインタです。source_stringは元の文字型の配列へのポインタです。numberは文字数です。
#include <stdio.h>
#include <string.h>
int main(void) {
char *text = "The test string is here";
char subtext[7];
memcpy(subtext, &text[9], 6);
subtext[6] = '\0';
printf("The original string is: %s\n", text);
printf("Substring is: %s", subtext);
return 0;
}
出力:
The original string is: The test string is here
Substring is: string
C 言語で文字列を取得する strncpy() 関数
関数 strncpy() は strcpy() と同じです。唯一の違いは、strncpy() 関数が与えられた文字数を元の文字列から対象の文字列にコピーすることです。関数 strncpy() は <string.h> ヘッダファイルで利用可能です。
この関数は元の文字列をコピーした後、コピー先の文字列へのポインタを返します。
strncpy() の構文
void *strncpy(void *destination_string, const void *source_string,
size_t number);
destination_stringは出力先の文字列へのポインタです。source_stringは元のcharの値の配列へのポインタです。numberは文字数です。
関数 strncpy() が source_string にヌル文字を見つけた場合、この関数は destination_string にヌル文字を追加します。
#include <stdio.h>
#include <string.h>
int main(void) {
char *text = "The test string is here";
char subtext[7];
strncpy(subtext, &text[9], 6);
subtext[6] = '\0';
printf("The original string is: %s\n", text);
printf("Substring is: %s", subtext);
return 0;
}
出力:
The original string is: The test string is here
Substring is: string