1

所以我正在努力学习如何进行文件 I/O,但是我正在使用的这本书在教授如何从文件中接收输入方面很糟糕。下面是他们如何从文件接收输入的示例,但它不起作用。我已经逐字逐句地复制了它,它应该遍历一个名称列表,直到它到达文件的末尾(或者他们在书中说),但它没有。事实上,如果我把while循环留在那里,它不会打印任何东西。

#include <stdio.h>
#include <conio.h>
#define MAX 250
int main()
{

  char name[MAX]; 
  FILE*pRead;

  pRead=fopen("test.txt", "r");
  if (pRead==NULL)
    {
     printf("file cannot be opened");
    }else      


     printf("contents of test.txt");
     while(fgets(name,sizeof(name),pRead)!=NULL){
           {
            printf("%s\n",name);
            fscanf(pRead, "%s", name);
           }


             getch();
   }

即使在网上,我看到的每个初学者教程都会对此进行一些修改,但我似乎无法让它发挥作用。

4

1 回答 1

1

我相信你的数组太小了,因此当你阅读 fscanf 时会覆盖内存导致奇怪的行为

如果您只想读取文件 - 假设现在输入文件中每行有一个名称,后跟换行符 - 只需使用 fgets() 读取文件即可。

#define MAXLINE 256

char name[MAXLINE]; 

while (fgets(name,sizeof(name),pRead)!=NULL)
{
  // do whatever
}
于 2012-11-17T16:56:24.770 回答