write()
可以使用函数编写非字符*吗?我需要打印一个unsigned long
,但我不知道该怎么做。换句话说,传递一个unsigned long
inbuf
参数。
问问题
430 次
1 回答
1
通常最好使用可用的标准 C 函数,因为它们更便于移植。如果可以,并且想将其输出为文本,则应该查看fprintf
而不是fwrite
. 前者将为您格式化,后者用于写入原始内存块。
例如:
int val = 42;
fprintf (fh, "%d", val); // should check return value.
将输出文本“42”。
如果您确实想写出二进制表示,fwrite
那么方法是:
int val = 42;
fwrite (&val, sizeof (val), 1, fh); // should check return value.
这将写出二进制表示,以便将 bytes 、0
和写入文件(当然取决于变量的内存布局 - 它可能因实现而异)。0
0
42
int
那是如果你能够使用文件句柄而不是描述符,否则这些f*
函数对你没有好处。您想要使用较低级别的工作可能有正当理由。
因此,如果您拥有的只是 的描述符write
,则需要首先将变量格式化为字符串,例如:
char buff[100];
sprintf (buff, "%d", val);
write (fd, buff, strlen (buff)); // should check return value.
那是假设你想要它作为文本。如果您希望它作为二进制值,它类似于我们在上面使用的方式fwrite
:
write (fd, &val, sizeof (val)); // should check return value.
于 2012-09-04T00:52:05.343 回答