fprintf()和fread()用于.txt文件

时间:2017-09-18 15:22:15

标签: c file hex printf fread

如果我要使用

fprintf(fp, "%d", 1);

要写入txt文件,我的文件内容是十六进制值1还是31? ('1'的ASCII值)

另外,fread()函数读取数据究竟是怎样的? 我有一个2字节的文件,十六进制值32和33(分别)。 这是我的代码:

struct S {char a,b;} x; 
FILE *f = fopen("F.TXT","rb"); 
if (f) { 
   fread(&x,1,sizeof(x),f); 
   printf("1:%c\n", x.b); 
   printf("2:%c\n", x.a); 
}

输出如下:

1:3
2:2

为什么?

1 个答案:

答案 0 :(得分:0)

回答OP的第一个问题:

发表声明:

fprintf(fp, "%d", 1);

该文件的内容将是包含以下内容的单个字符:

0x31

这是ASCII字符的十六进制值:1