0

write()可以使用函数编写非字符*吗?我需要打印一个unsigned long,但我不知道该怎么做。换句话说,传递一个unsigned longinbuf参数。

4

1 回答 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和写入文件(当然取决于变量的内存布局 - 它可能因实现而异)。0042int


那是如果你能够使用文件句柄而不是描述符,否则这些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 回答