C fprintf()和fread()与.txt文件的用法
如果我使用C fprintf()和fread()与.txt文件的用法,c,file,hex,printf,fread,C,File,Hex,Printf,Fread,如果我使用 fprintf(fp, "%d", 1); 要写入txt文件,我的文件内容是十六进制值1还是31?(ASCII值表示“1”) 另外,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
fprintf(fp, "%d", 1);
要写入txt
文件,我的文件内容是十六进制值1还是31?(ASCII值表示“1”)
另外,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
为什么会这样?要回答老年退休金计划的第一个问题:
鉴于这一说法:
fprintf(fp, "%d", 1);
该文件的内容将是包含以下内容的单个字符:
0x31
这是ASCII字符的十六进制值:1我不理解这个问题。0x33是3
@EugeneSh的ASCII十六进制值。没问题,只是想知道fread是如何处理数据的。fread
正在读取二进制数据printf
正在按照格式字符串的指示对其进行解释。fprintf(fp,“%d”,1)
将字符(ASCII)'1'
写入文件。@EugeneSh。fread
的原型是fread(void、元素大小、元素数量、文件*)代码>,我读取了2个字节中的1个元素,为什么不将其分配给带有溢出的x.a
值?为什么它被正确地分配到a
和b
?