ヌル終端、strlen/sizeof、strcmp、文字列代入の理解度を確認しましょう。
char s[] = "Hello"; printf("%lu\n", sizeof(s));
'\0'(ヌル終端)が自動追加されます。char s[] = "ABC"; printf("strlen=%lu, sizeof=%lu\n", strlen(s), sizeof(s));
strlen は '\0' を含まない文字数 → 3。sizeof は '\0' 含むバイト数 → 4。char a[] = "apple"; char b[] = "apple"; if (strcmp(a, b) == 0) { printf("同じ\n"); } else { printf("違う\n"); }
strcmp は文字列が等しいとき 0 を返します。== で直接比較するとアドレス比較になるので、文字列の比較には必ず strcmp を使うのがC言語の基本です。char s[10]; s = "Hello"; printf("%s\n", s);
= で文字列を代入できません。strcpy(s, "Hello") を使います。char s[] = "Hello" は初期化なのでOK。代入と初期化は別物です。