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

时间:2012-03-07 06:58:16

标签: c unix file-descriptor

我想使用write(http://linux.about.com/library/cmd/blcmdl2_write.htm)将整数1写入第一个字节,将0x35写入文件描述符的第二个字节,但是我得到以下内容当我尝试以下操作时发出警告:

write(fd, 1, 1);
write(fd, 0x35, 1);


source.c:29: warning: passing argument 2 of ‘write’ makes pointer from integer without a cast
source.c:30: warning: passing argument 2 of ‘write’ makes pointer from integer without a cast

2 个答案:

答案 0 :(得分:9)

您需要传递一个地址,因此您需要某种形式或其他形式的变量。

如果您只需要一个字符:

char c = 1;
write(fd, &c, 1);
c = 0x35;
write(fd, &c, 1);

或使用数组(这通常更常见):

char data[2] = { 0x01, 0x35 };
write(fd, data, 2);

答案 1 :(得分:2)

第二个参数应该是指向缓冲区的指针,你可以这样做:

char a = 1;
write(fd, &a, 1);

甚至更简单:

char buff[] = {1, 0x35};
write(fd, buff, sizeof(buff));