在 Windows 下将值写入 C 中的文件时,我得到的东西似乎是错误的,结果与在 Cygwin 中运行的同一程序不同。
在这种情况下,我将浮点数写入文件:
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <io.h>
int main( void )
{
int fd;
float f;
fd = open("file.a", O_RDWR | O_CREAT);
f = (float)atof("-0.1352237");
printf("%.7f\n", f);
write(fd, (void *)&f, sizeof(float));
close(fd);
printf("sizeof(float): %d\n", sizeof(float));
return (EXIT_SUCCESS);
}
我已经在 Windows 和 Cygwin 中编译并运行了这个文件(没有包含),但我没有得到相同的结果。由于我正在写一个浮点数,我希望输出文件有 4 个字节写入它
但是,在命令行中使用 cl.exe 编译时的输出似乎是错误的:
1578 0d0a be
如果我从文件中读取到浮点数,显然我没有得到正确的值。而且写入文件的字节数是错误的,应该只有4个字节,而不是5个。
这是我在 Cygwin 中运行时得到的:
1578 0abe
这是对的。如果我从文件中读取它到浮点数,我会得到正确的值(-0.1352237)。
我在这里错过了什么吗?这些功能的windows实现是否有缺陷?或者也许我没有正确写入数据?