计算int的字节数的正确方法是什么?以及如何将int写入文件描述符?
这是一个模拟代码示例,可能会明确我想要实现的目标:
char *message = "test message";
int length = strlen(message);
int fd = open(file, O_CREAT|O_RDWR);
write(fd, length??, ??); // <--- what goes here
write(fd, message, length);
我不关心平台独立性和字节顺序,只是它可以在尽可能多的平台上编译。
答案 0 :(得分:9)
sizeof(length)
进入该领域。
如果您以后更改sizeof(int)
的类型,则优于使用length
。
sizeof
以sizeof(char)
的倍数表示数据类型的大小,该值始终为1.
答案 1 :(得分:2)
sizeof是你的朋友。
write(fd, &length, sizeof(int));
答案 2 :(得分:2)
sizeof(int)= 4(在Linux,32&amp; 64 Bit x86-Architecture上)
sizeof(long)是32位上的4位,64位上的8位(在Linux上,x86-32 / 64-Architecture)
关于Windows的Dunno。
答案 3 :(得分:0)
write(fd, &length, sizeof(length));
您可以将sizeof
与变量名称或类型名称一起使用。在这种情况下,您可以完成sizeof(int)
。
write
函数获取您要写入的内存区域的地址,因此您使用&
(地址)运算符。您不必为字符串执行此操作,因为您已经有一个指针(char*
)。