可以使用write()
函数编写非char *吗?我需要打印unsigned long
,我不知道该怎么做。换句话说,在unsigned long
参数中传递buf
。
答案 0 :(得分: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.
这将写出二进制表示,以便将字节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.