C のヌル終了文字列
Naila Saad Siddiqui
2024年2月15日
この小さな記事では、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 では、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;
}
出力: