コードに問題があります。ファイルに保存されたいくつかの以前のコマンドを読み込んで、後で使用するために配列に配置しようとしています。
これが私の関連するコードです:
if( (pastHist = fopen("history.txt", "r+")) == NULL)
{
pastHist = fopen("history.txt", "w+");
}
else
{
printf("%s", "INSIDE the else!");
pastHist = fopen("history.txt", "r+");
fscanf(pastHist, "%s", fstring);
while (fstring != NULL)
{
printf("%s %s", "the read in string is: ", fstring);
strcpy(cmndLine[cmndIndex], fstring);
strcpy(cmndLinecpy[cmndIndex], fstring);
cmndIndex++;
cmndNum++;
fscanf(pastHist, "%s", fstring);
}
}
これで、コードはファイルに正常に書き込みます。(執筆部分は別の場所で開催されます)。以前に書き込んだファイルから読み取った場合、ファイルには次のように書かれていました:
ls rmdir 天使の歴史
次に、この印刷ステートメントを使用して、読んでいるものを再確認します...「INSIDE the else! 文字列の読み取りは: ls文字列の読み取りは: rmdir文字列の読み取りは: angel文字列の読み取りは: historythe文字列の読み取り: history文字列の読み取り: history
...そして、最後に読み込まれたのは履歴であると 100 万回繰り返します。これはなぜですか?私もwhile条件で試しました
while(getchar() != EOF)
しかし、それは私に同じことを与えました。
助けてください。ありがとう。