これは私のコードです:
char *genWord(int wordLen){
char array[wordLen + 1];
char *word;
int i;
for(i = 0; i <= wordLen; i++){
array[i] = 'a';
}
array[wordLen] = '\0';
//Test1 printf
printf("%s \n", array);
word = array;
//Test 2
printf("%s \n", word);
return word;
}
main(){
char *word;
int wordLen = 10;
word = (char *)genWord(wordLen);
//Test 3
printf("%s", word);
}
これは、Linux gccで実行される3(同じプログラム)の出力です。
1位:
aaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaT��aaaaa
2番目:
aaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaa�ƃ�aaaaa
3位:
aaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaa����aaaaa
何が悪いのか、さらに悪いことに、実行ごとに異なる出力を取得する方法を想像できませんか?可変単語は文字列の一部にゴミを入れることはできませんよね?!