我想将二进制文件源复制到文件目标.而已!该代码的灵感来自Internet上的许多示例.
#include <stdio.h>
int main(int argc, char **argv) {
FILE *fp1, *fp2;
char ch;
fp1 = fopen("source.pdf", "r");
fp2 = fopen("target.pdf", "w");
while((ch = fgetc(fp1)) != EOF)
fputc(ch, fp2);
fclose(fp1);
fclose(fp2);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
结果文件大小不同.
root@vm:/home/coder/test# ls -l
-rwxr-x--- 1 root root 14593 Feb 28 10:24 source.pdf
-rw-r--r-- 1 root root 159 Mar 1 20:19 target.pdf
Run Code Online (Sandbox Code Playgroud)
好的,那有什么问题呢?
我知道char是未签名的,并且在80以上时签名.请看这里.
这在我使用时得到证实,printf("%x\n", ch);它有时会返回大约50%的时间FFFFFFE1.
我的问题的解决方案是使用intiso char.