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