C语言unsigned char、二进制问题

来源:百度知道 编辑:UC知道 时间:2024/07/06 12:05:29
例:将一个二进制文件的内容显示在屏幕上:
#include <stdio.h>
main(int argc, char *argv[])
{
unsigned char ch;
int i;
FILE *fp;

i=0;
if ((fp =fopen(argv[1], "rb"))==NULL)
{
fprintf(stderr, "cannot open this file. \n");
exit(0);
}
while(!feof(fp))
{
if (i%30==0)
printf("\n");
ch=fgetc(fp);
printf("%02x", ch);
i++;
}
}

想请教下各位高手,为什么要用unsigned char 类型来表示二进制数呢?为什么不用int?
是不是因为要节省存储空间?
谢谢谢谢谢了!!!!!
注:书上就是这么写的,而且运行正确!!!

你的问题就不对,代码中有错误的,unsigned char应该改成 int
因为fgetc是这么声明的:

int fgetc(FILE *stream);

所以……

用int也可以, 节省这3字节有啥用, 这个就是编程的喜欢怎么写就怎么写了, 反正怎么写又没多少差别的

用 unsigned char是可以的, fgetc的声明虽然是用int ,其实就是个char, 多的只是为了表示错误状况,可以不搭理