我需要在文件中跟踪大于255的int数。它大于最大的无符号字符,因此使用fputc
似乎不可靠(第一个问题:它总是正确吗?)。
我可以使用fputs
,通过转换字符中的数字,从而获得一个字符串;但在程序中我也需要数字作为整数!
那么,标题中的问题是:什么是最有效的方式来编写这个数字?有没有办法避免转换为字符串?
请保持该文件应该被另一个进程重写,其中char号应该再次成为int。
答案 0 :(得分:3)
只写出二进制表示:
int fd;
...
int foo = 1234;
write (fd, &foo, sizeof(foo));
(并添加错误处理)。
或者如果你喜欢FILE*
FILE *file;
...
int foo = 1234;
fwrite (&foo, sizeof(foo), 1, file);
(并添加错误处理)。
请注意,如果要将文件加载到具有不同字节顺序的其他系统上,则可能需要确保字节的字节顺序是常量(例如,首先是最高有效字节或最低有效字节)。如果您愿意,可以使用htnol
,htons
等。如果您知道加载文件的体系结构与保存文件的体系结构相同,则无需进行此操作。