私はCodeGuruで「strlen vs sizeof」というタイトルのスレッドを読んでいましたが、回答の1つは「とにかくchar
文字列リテラルで配列を初期化する[sic]悪い習慣です」と述べています。
これは本当ですか、それとも彼の(「エリート会員」ではあるが)意見ですか?
元の質問は次のとおりです。
#include <stdio.h>
#include<string.h>
main()
{
char string[] = "october";
strcpy(string, "september");
printf("the size of %s is %d and the length is %d\n\n", string, sizeof(string), strlen(string));
return 0;
}
右。サイズは長さに1を加えたものでなければなりませんか?
これは出力です
the size of september is 8 and the length is 9
サイズは必ず10にする必要があります。strcpyによって変更される前に文字列のsizeofを計算し、その後に長さを計算するようなものです。
私の構文に何か問題がありますか?
ここで回答は:
とにかく、文字列リテラルでchar配列を初期化するのは悪い習慣です。したがって、常に次のいずれかを実行してください。
const char string1[] = "october";
char string2[20]; strcpy(string2, "september");