【发布时间】:2019-07-08 15:25:07
【问题描述】:
这是我的文件复制代码:
void main()
{
char c;
FILE *fptr1, *fptr2;
fptr1=fopen("abc.docx","r");
fptr2=fopen("paste_here.docx","w");
c=fgetc(fptr1);
while (c!=EOF)
{
putc(c,fptr2);
c=fgetc(fptr1);
}
fclose(fptr1);
fclose(fptr2);
}
我希望内容会被复制,但每当我在运行此程序后尝试打开 paste_here.docx 文件时,它都会说由于内容存在问题而无法打开该文件。
【问题讨论】:
-
fgetc()有意返回int。 -
输出文件的大小是否正确?您应该将
char c;定义为int c;,而0xFF的数据值可能导致循环过早结束。 -
改用
fread和fwrite,逐个字符读取/写入字符效率非常低。 Youz 还应该缩进你的代码(就像你的 C 教科书中的示例一样) -
并没有说你是否使用Miscosoft编译器,但是如果你是,你必须在复制文件时指定文件读/写模式,二进制模式
"rb"和"wb"防止看起来像(但不是)行尾字符的数据被转换。 -