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()
,不可重入,不能从信号处理程序使用。