C のヌル終了文字列

Naila Saad Siddiqui 2024年2月15日
  1. C の文字列
  2. C の C 文字列ライブラリ関数
C のヌル終了文字列

この小さな記事では、C 言語での文字列の使用について説明します。 C 言語の文字列は、文字配列を使用して形成されます。

C の文字列

実際には、文字列はヌル文字 \0 で閉じられた文字の 1 次元配列です。 文字列を構成する文字の後に null が続き、null 終端を持つ文字列が形成されます。

次のコード スニペットは、最後に null 文字を含む文字列を作成します。 最後にヌル文字を配置するには、文字列の長さを文字列の元の単語数よりも 1 文字大きくする必要があります。

char test[5] = {'T', 'e', 's', 't', '\0'};

これは、C で文字列を初期化する 1つの方法です。文字列のサイズは 5 に設定されていますが、文字列の文字数は 4 であり、5 番目の文字はヌル文字 \0 であることに注意してください。

次のコード セグメントのように文字列を初期化することもできます。

char test[] = "Test";

したがって、文字列の末尾にヌル文字を配置することは必須ではありません。 C コンパイラが自動的にそれを行います。

両方の文字列を出力する場合、終端のヌル文字は出力されません。 以下の例を見てみましょう。

#include <stdio.h>
int main() {
  char test[5] = {'T', 'e', 's', 't', '\0'};
  char test2[] = "Test";
  printf("Test message: %s\n", test);
  printf("Test message 2: %s\n", test2);
}

上記のコード セグメントで 2つの文字列を作成し、同じデータで初期化しました。 最初の文字の最後にヌル文字を明示的に配置しました。

同時に、2番目のものには配置されません。 これらの文字列を出力すると、両方とも同じデータになります。

出力:

C 文字列のデモ

C の C 文字列ライブラリ関数

C では、null で終わる文字列に対して多くの関数がサポートされています。 string クラスには多数の関数が用意されています。 いくつかは次のとおりです。

いいえ 機能 説明
1 strcpy(str1, str2); str1 を str2 にコピーします。
2 strcat(str1, str2); str1 の後に str2 が続くように、str2 と str1 を結合します。
3 strlen(str1); str1 の長さを示します。
4 strcmp(str1, str2); 3つの結果があります。str1 と str2 が等しい場合は 1 if str1 < str2; if str1> str2
5 strchr(str1, c); str1 で最初に出現する c への参照を返します。
6 strstr(str1, str2); str1 内で最初に出現する str2 への参照を返します。

次の例では、これらの関数のいくつかを使用して、C での文字列の使用方法を示しています。

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

int main() {
  char mystr1[12] = "First";
  char mystr2[12] = "Second";
  char mystr3[12];
  int length;

  /* copy the first string into the third */
  strcpy(mystr3, mystr1);
  printf("strcpy( mystr3, mystr1) :  %s\n", mystr3);

  /* concatenates first and second */
  strcat(mystr1, mystr2);
  printf("strcat( mystr1, mystr2):   %s\n", mystr1);

  /* length of the first string after concatenation */
  length = strlen(mystr1);
  printf("strlen(mystr1) :  %d\n", length);

  return 0;
}

出力:

string functions output

関連記事 - C String