C 如何使用write()代替printf()

C 如何使用write()代替printf(),c,console,output,system-calls,C,Console,Output,System Calls,我正试图使用syscall write()在控制台上打印一些内容。到目前为止,这比我想象的要困难 功能保持简单: void writeOutput(char a, int64_t b, uint8_t c) { char bNew[]; // what should be the size of that array= while(b != 0x0000000000000000) { int leftover = b%10; bNew[i] = intTo

我正试图使用syscall write()在控制台上打印一些内容。到目前为止,这比我想象的要困难

功能保持简单:

void writeOutput(char a, int64_t b, uint8_t c) {
    char bNew[]; // what should be the size of that array=
    while(b != 0x0000000000000000) {
      int leftover = b%10;
      bNew[i] = intToChar(leftover);
      b = b/10;
      i++;
    }
}

char intToChar(int num) {
    return '0' + num;
}
a的格式应为char,b的格式应为十进制数,c的格式应为八进制数

例如,一个可能的输入是: writeOutput('a',-0xffff,17);//输出为“a-65535 21”

打印的参数应以空格分隔,并以换行符结束,以达到标准输出。另外,我正在尝试在不使用sprintf系列功能的情况下进行。这使得它有点棘手

编辑:我的问题是:如何使用write()实现这一点?(Sry,错过了!) 代码是在线的。
EDIT2:我的主要问题是没有使用sprintf系列。我希望您能帮助我。

您可以使用第一个参数调用
write()
,该参数是作为标准输出的fd。它将写入stdout,而stdout是您的控制台。但在此之前,您需要有一个字符串缓冲区,您可以使用与printf`格式相同的
sprintf'或
snprintf
。但是printf方法更简单,除非您有一些非常特殊的用例,否则它应该可以达到这个目的

#包括
#include <unistd.h> 
 
int main(void) { 
    write(1,"Hello World!", 12); 
    return 0; 
}
int main(void){ 写(1,“你好,世界!”,12); 返回0; }
那么,你的问题是什么?为什么不使用
printf()
?将参数转换成字符串,然后调用write。@凯:老实说,我一直在尝试实现,但到目前为止我失败了。我希望有人能帮助我。你可以使用
sprintf
创建字符串,然后将其传递给编写。提问者明确表示他/她不想使用sprintf家族的功能。当然,使用sprintf是可能的,但是,如果不使用sprintf系列的函数,这是不可能的吗?@user2965601您可以编写自己的
printf
系列。