0

我想在函数putchar的帮助下编写一个函数,例如 , write

#include <unistd.h>

ssize_t f(int fd, int c) {
    return write(fd, &c, 1);
}

但我认为这里可能存在字节顺序问题,不是吗?那我应该使用sizeof (int)吗?我有点困惑,我不知道如何处理(需要演员表unsigned char吗?)。

4

2 回答 2

3

是的,这里可能存在字节顺序问题。c解决方法是作为一个unsigned char而不是作为一个传递int

ssize_t
f(int fd, unsigned char c)
{
    return write(fd, &c, 1);
}

这些<stdio.h>例程与ints 一起工作主要是出于历史原因。它们非常古老,并且包含许多现在被认为不正确的界面设计决策。不要将它们用作模板。

于 2012-08-27T16:42:48.180 回答
1

是的,很好,有一个字节序问题。如果要保留函数签名,需要将数据临时存入一个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));
}
于 2012-08-27T16:45:18.573 回答