Kobi
Kobi

Reputation: 1515

Writing integers to file descriptor using write?

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

Answers (2)

MByD
MByD

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

Mat
Mat

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

Related Questions