2012-03-07 105 views
1

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

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 

回答

8

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

如果你需要的是一个单个字符:

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

或者使用一个阵列(这通常是更常见的):

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

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

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

或更简单:

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