这段 C 代码的一部分困扰着我,我看不出我做错了什么。我并不是要让某人编写完整的代码,因为这是我的家庭作业,但我真的很想知道我在这里做错了什么。所以这是 main 的一部分:
FILE *fp,*fd;
fp=fopen("test1.txt","r");
if (fp==NULL)
return -1;
fd=fopen("test2.txt","w");
if (fd==NULL)
return -2;
while (fp != EOF){
fread(fd,1,10,fp);
}
//read_copy(fp,fd);
fclose(fp);
fclose(fd);
return 0;
而且我似乎无法弄清楚为什么它不起作用。 while这样写,就进入了死循环。如果我尝试在 while 中放入 fscanf()
,它会给我 seg fault
。那我做错了什么?
谢谢!
最佳答案
fread()
函数只接受一个 FILE *
类型的参数。
您实质上是用文件中的数据覆盖 C 库的内部文件表示。
查看任何basic reference fread()
的正确原型(prototype)。你需要一个缓冲区,比如:
char buffer[1024];
fread(buffer, 1, sizeof buffer, fp);
此外,您当然必须检查 fread()
的返回值。此外,我建议使用比 fd
和 fp
更好的名称,它们非常不透明。
关于c - 从文件中读取c,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14727243/