在C中用文件写一个数字的最有效方法?

时间:2014-01-18 17:18:28

标签: c string file-io char int

我需要在文件中跟踪大于255的int数。它大于最大的无符号字符,因此使用fputc似乎不可靠(第一个问题:它总是正确吗?)。

我可以使用fputs,通过转换字符中的数字,从而获得一个字符串;但在程序中我也需要数字作为整数!

那么,标题中的问题是:什么是最有效的方式来编写这个数字?有没有办法避免转换为字符串? 请保持该文件应该被另一个进程重写,其中char号应该再次成为int。

1 个答案:

答案 0 :(得分:3)

只写出二进制表示:

int fd;
...
int foo = 1234;
write (fd, &foo, sizeof(foo));

(并添加错误处理)。

或者如果你喜欢FILE*

FILE *file;
...
int foo = 1234;
fwrite (&foo, sizeof(foo), 1, file);

(并添加错误处理)。

请注意,如果要将文件加载到具有不同字节顺序的其他系统上,则可能需要确保字节的字节顺序是常量(例如,首先是最高有效字节或最低有效字节)。如果您愿意,可以使用htnolhtons等。如果您知道加载文件的体系结构与保存文件的体系结构相同,则无需进行此操作。