Запись целых чисел в файловый дескриптор с использованием write? - PullRequest
2 голосов
/ 07 марта 2012

Я хочу записать целое число 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

Ответы [ 2 ]

9 голосов
/ 07 марта 2012

Вам нужно передать адрес, поэтому вам понадобится переменная той или иной формы.

Если вам нужен только один символ:

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

Или используйте массив (это обычно более распространено):

char data[2] = { 0x01, 0x35 };
write(fd, data, 2);
2 голосов
/ 07 марта 2012

Второй параметр должен быть указателем на буфер, вы можете сделать это:

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

или даже проще:

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