c - 从文件中读取c

标签 c

这段 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() 的返回值。此外,我建议使用比 fdfp 更好的名称,它们非常不透明。

关于c - 从文件中读取c,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14727243/

相关文章:

c - 为什么 GCC 警告不要进行这种隐式转换?

c - 在不使用 getpass (3) 的情况下在 C 中获取密码?

c - 在 C 中运行 gets 函数时转到另一个语句

c - 如何等到数据写入管道的另一端

c - fread 为什么以二进制模式读取以 ff fe 开头的文件返回 1

c++ - 什么时候有人会使用 union ?它是C-only时代的残余吗?

c - 如何将匿名字符串文字传递给函数?

c - 链表 - 添加节点时程序崩溃

C程序: determine which directory a file is in

c - 负十进制转二进制c代码