C 言語でサブストリングを取得する

Satishkumar Bharadwaj 2023年10月12日
  1. C 言語で部分文字列を取得するための memcpy() 関数
  2. C 言語で文字列を取得する strncpy() 関数
C 言語でサブストリングを取得する

このチュートリアルでは、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

関連記事 - C Char

関連記事 - C String