C 使用write()将整数写入文件描述符?

C 使用write()将整数写入文件描述符?,c,file,char,size,system-calls,C,File,Char,Size,System Calls,我正在尝试使用文件描述符将整数写入文件。 我试着做: fd is the file descriptor int i = 17; write(fd, &i, sizeof i); // doesn't get written 然而,如果我这样做,字符会被打印出来 char c = 'a'; write(fd, &c, sizeof c); 如何在不使用任何外部函数的情况下直接写入整数。请注意,我只想使用文件描述符。这是不可能的吗?假设fd是一个有效的打开文件描

我正在尝试使用文件描述符将整数写入文件。
我试着做:

fd is the file descriptor
int i = 17;
write(fd, &i, sizeof i);
// doesn't get written
然而,如果我这样做,字符会被打印出来

    char c = 'a';
    write(fd, &c, sizeof c);

如何在不使用任何外部函数的情况下直接写入整数。请注意,我只想使用文件描述符。

这是不可能的吗?假设
fd
是一个有效的打开文件描述符,您的第一个示例会将整数打印到文件中。问题是它将以二进制形式编写,即不是作为
“17”
,而是作为
“\x11\0\0\0”
(假设是一个小的endian机器)。如果您使用的是最新的Unix系统,则可以使用
dprintf(fd,%d\n),i)
作为
fprintf()
的一个版本,而不需要使用stdio流。但是就像
write()
libc包装器一样,它不是一个系统调用,您仍然需要链接到标准的C库。与
printf()
(但与
write()
)不同,
dprintf()
可以使用
malloc()
,不可重入,不能从信号处理程序使用。