私はプログラムを書いていて、次のループがあります:
while ((c = getchar()) != EOF){
if (c == '\n'){
char newword[strlen(word) + 1];
strcpy(newword, word);
words[i].key = newword;
memset(word, '\0', MAXLENGTH);
i++;
j = 0;
} else {
word[j++] = c;
}
}
words
構造体の配列はどこにありますか:
struct kvp{
char *key;
int line;
};
word
は(サイズの)大きな配列でMAXLENGTH
あり、最初のいくつかの値が文字列を構成します。
問題はにありwords[i].key
ます。ifステートメント内で(に設定した後にnewword
)出力すると、正しい値、つまり、入力された単語と同じ最小サイズの文字列が返されます。ただし、ifステートメントが終了し、whileループの外部に戻ると、完全にランダムなものに変更されます?HBk?
。
発生している可能性があると思われることが3つあります。
strcpy
私が思うように行動しませんnewword
はローカル変数であり、それはどういうわけか物事に影響を及ぼします(正しく聞こえません)- 私はまだポインタや構造を正しく理解していません(完全に可能です、私はCを学び始めたばかりです)
何が起こっている?