Reputation: 1515
I want to write the integer 1 into the first byte and 0x35 to the second byte of a file descriptor using write (http://linux.about.com/library/cmd/blcmdl2_write.htm) but I get the following warning when I try the following:
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
Upvotes: 3
Views: 15392
Reputation: 137422
The second parameter should be a pointer to a buffer, you can do that:
char a = 1;
write(fd, &a, 1);
or even simpler:
char buff[] = {1, 0x35};
write(fd, buff, sizeof(buff));
Upvotes: 2
Reputation: 206859
You need to pass an address, so you'll need a variable of some form or other.
If all you need is a single char:
char c = 1;
write(fd, &c, 1);
c = 0x35;
write(fd, &c, 1);
Or use an array (this is generally more common):
char data[2] = { 0x01, 0x35 };
write(fd, data, 2);
Upvotes: 10