2012-03-07 29 views
1

write(http://linux.about.com/library/cmd/blcmdl2_write.htm)を使用して、ファイルディスクリプタの最初のバイトに整数1を書き込み、ファイルディスクリプタの2番目のバイトに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 

答えて

8

は、あなたはいくつかのフォームまたは他の変数が必要になりますので、アドレスを渡す必要があります。

あなたが必要とするすべては、単一のcharの場合:

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

または配列を使用します(これは一般的に、より一般的です):2番目のパラメータがバッファへのポインタでなければなりません

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)); 
関連する問題