C-and-K / coding-interview

0 stars 0 forks source link

p.221 終端文字列について #5

Open ChanPoyu opened 3 years ago

ChanPoyu commented 3 years ago

ネイティヴのC(++)言語では、文字列のデータタイプが入っていません。 なので、文字列を扱うために、charの配列を使わないといけません。 例えば、

#include <stdio.h>
#include <string.h>
main()
{
    char name1[24] = "Mickey Mouse";
    char* name2 = "Minnie Mouse";
}

上記の文字列を扱う際に、必ず文字列に終端文字列 '\0' が入ります。 終端文字列の役割としては、言葉通りに、文字列の終わりを表しています。 C(++)のビルドイン関数の中には終端文字列に依存する処理があり、 例えば strlen()strcpy() など、なので、終端文字列がなければエラーを起こすことになります。

C(++)の中で、終端文字列の動作について、一つ例を挙げます。 printf で文字列のスタンダードアウトプットをする際に、終端文字列に遭遇すると、出力が停止されることが確認できました。

#include <stdio.h>

int main(void){
    char* str1 = "Hello, Konabe\0";
    char* str2 = "Hello, \0Konabe";

    printf("%s\n", str1); //Hello, Konabe
    printf("%s\n", str2); //Hello, 

    return 0;
}