0
我遇到一些麻煩我的代碼。我試圖讀取保存到文件中的一些先前的命令,並將它們放在我的數組中以供以後使用。掃描,最後串重複
這裏是我的相關代碼段:
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天使 歷史
然後我用這個print語句仔細檢查,我讀什麼... ...它打印出 「裏面串否則讀爲:在字符串lsthe讀取:rmdirthe字符串讀的是:在字符串angelthe讀的是:在字符串近代史讀的是:在字符串近代史讀的是:歷史
...和它重複讀取的最後一件事是歷史上億次。爲什麼是這種情況?我也試圖與while條件
while(getchar() != EOF)
但是這給了我同樣的事情。
請大家幫忙。 謝謝。
1,而對於OP的參考'的fscanf()'文檔[可以找到這裏](http://en.cppreference.com/w/c/io/fscanf)。要特別注意返回值,並且做一些註釋來正確地限制你'%s'作爲你的目標緩衝區大小。緩衝區溢出很糟糕。 – WhozCraig