我想将数据从一个文件复制到另一个文件。但只复制一个字节。
#include<stdio.h>
void main() {
FILE *fp1, *fp2;
char a;
fp1 = fopen("test.jpg", "r");
if (fp1 == NULL) {
puts("cannot open this file");
exit(1);
}
fp2 = fopen("test1.jpg", "w+");
if (fp2 == NULL) {
puts("Not able to open this file");
fclose(fp1);
exit(1);
}
do {
a = fgetc(fp1);
fputc(a, fp2);
} while (a != EOF);
fcloseall();
}
test.jpg包含数据ff d8 32 86 .....但它只复制ff并从while循环中出来。我做错了什么
答案 0 :(得分:3)
将a
声明为int
,而不是char
。
int a;
否则,第一个0xFF
会扩展为-1
(EOF
)。
您还应该使用b
打开/关闭文件(对于&#34;二进制&#34;):
fp1 = fopen("test.jpg", "rb");
// ...
fp2 = fopen("test1.jpg", "w+b");
并且,正如Drew所说,在写
之前检查EOF
:
while ((a = fgetc(fp1)) != EOF) {
fputc(a, fp2);
}