相关疑难解决方法(0)

为什么将fgetc()返回到char iso int?

我想将二进制文件源复制到文件目标.而已!该代码的灵感来自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.

找到的示例char:示例1,示例2 示例3, …

c variables fgetc

1
推荐指数
2
解决办法
300
查看次数

标签 统计

c ×1

fgetc ×1

variables ×1