Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C fprintf()和fread()与.txt文件的用法_C_File_Hex_Printf_Fread - Fatal编程技术网

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