我想通过读取二进制文件在我的txt文件中写入值4.0,看起来像
0000000:046a 6f68 6e03 646f 6500 0000 0140 8000 .john.doe .... @ ..
0000010:00
我想要这个输出。
0000000:6a6f 686e 2064 6f65 2031 2034 2e30 0a john doe 1 4.0。
我的问题是编写浮动值。
char buffer[NAME_MAX];
float *gpaPtr;
float gpaNumber = 0;
fread(buffer, sizeof(float) , 1, fp);
gpaPtr = buffer;
gpaNumber = (float)*gpaPtr;
printf("%f\n", gpaNumber);
clearArray(buffer);
fprintf(fp2,"%s %s %d %f\n" ,firstName, lastName, idNumber,gpaNumber );
当我使用此代码在文件中写入时,它就是这个。
<00> 0000000:6a6f 686e 2064 6f65 2031 2034 2e30 3030 john doe 1 4.0000000000010:3030 300a
我的代码写的比我想要的多。
我使用浮点指针指向缓冲区的第一个地址,它应该只写我认为浮点数的大小(gpaPtr和gpaNumber都是浮点数)
我猜这个问题是由32个单精度类型和64个双精度引起的。
请让我知道如何获得正确大小的gpa以及为什么会这样。
答案 0 :(得分:0)
请阅读有关printf()
功能的一些文档。请密切关注%f
转化说明符的“精确度”字段。