我想在函数putchar
的帮助下编写一个函数,例如 , write
。
#include <unistd.h>
ssize_t f(int fd, int c) {
return write(fd, &c, 1);
}
但我认为这里可能存在字节顺序问题,不是吗?那我应该使用sizeof (int)
吗?我有点困惑,我不知道如何处理(需要演员表unsigned char
吗?)。
是的,这里可能存在字节顺序问题。c
解决方法是作为一个unsigned char
而不是作为一个传递int
。
ssize_t
f(int fd, unsigned char c)
{
return write(fd, &c, 1);
}
这些<stdio.h>
例程与int
s 一起工作主要是出于历史原因。它们非常古老,并且包含许多现在被认为不正确的界面设计决策。不要将它们用作模板。
是的,很好,有一个字节序问题。如果要保留函数签名,需要将数据临时存入一个unsigned char,然后输出;
#include <unistd.h>
ssize_t f(int fd, int c) {
unsigned char ch = (unsigned char)c;
return write(fd, &ch, sizeof(unsigned char));
}