C 正在从文件扫描,最后一个字符串正在重复
我的代码有点问题。我试图读入保存到文件中的一些以前的命令,并将它们放在数组中供以后使用 以下是我的相关代码:C 正在从文件扫描,最后一个字符串正在重复,c,file,scanf,C,File,Scanf,我的代码有点问题。我试图读入保存到文件中的一些以前的命令,并将它们放在数组中供以后使用 以下是我的相关代码: if( (pastHist = fopen("history.txt", "r+")) == NULL) { pastHist = fopen("history.txt", "w+"); } else { printf("%s", "INSIDE the else!"); pastHist = fopen("history.txt", "r+"); fscanf
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天使
历史
然后我用这个打印语句再次检查我读的内容。。。它打印出来了
“在else内!读入字符串是:1读入字符串是:rmdir读入字符串是:Angel读入字符串是:history读入字符串是:history读入字符串是:history
…它重复了历史上最后一次读到的东西是一百万次。为什么是这样?我也用while条件试过了
while(getchar() != EOF)
但这给了我同样的东西
请帮忙。
谢谢。
fstring
不能通过调用fscanf
将其设置为NULL。您要检查的是fscanf
的返回值
您的
getchar()
循环同样没有任何用处-它从标准输入中读取,而不是从您的文件中读取。+1,作为OP的参考fscanf()
文档。请特别注意返回值,并注意将%s
适当限制为目标缓冲区大小小于1。缓冲区溢出非常严重。