c - 从文件扫描,最后一个字符串重复

标签 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(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里面!读取的字符串是:ls读取的字符串是:rmdir读取的字符串是:angel读取的字符串是:history读取的字符串是:history读取的字符串是:history

...并且它重复读入的最后一件事是历史一百万次。为什么会这样呢?我也尝试过 while 条件

while(getchar() != EOF)

但这给了我同样的东西。

请帮忙。 谢谢。

最佳答案

fstring 永远不能通过调用 fscanf 设置为 NULL。您要检查的是fscanf返回值

您的 getchar() 循环同样没有做任何有用的事情 - 它是从标准输入读取,而不是从您的文件中读取。

关于c - 从文件扫描,最后一个字符串重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19236222/

相关文章:

c - 打印语句在无限循环之前不会打印

c - 使用指针迭代仅适用于数组的一半

Python - 访问 protected 网络资源

c - 为什么在 C 中进行 strcpy 时编码会乱码

c - scanf 在 C 中不是很宽容

c - 为什么我的 fscanf 不读取?

c - 如何在 C 中指定范围?

c - 如何重新加载 C 程序?

android - 在下载文件之前预先为其分配空间

C 代码、scanf 和 getchar