所以我正在努力学习如何进行文件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();
}
即使在线,我看到的每个初学者教程也都有一些变化,但我似乎无法让它工作甚至一点点。
答案 0 :(得分:1)
我相信你的数组太小,因此在你阅读fscanf时会覆盖导致奇怪行为的内存
如果你只想阅读文件 - 假设现在输入文件中每行有一个名称后跟换行符 - 只需使用fgets()读取文件。
#define MAXLINE 256
char name[MAXLINE];
while (fgets(name,sizeof(name),pRead)!=NULL)
{
// do whatever
}