【发布时间】:2020-06-05 08:21:06
【问题描述】:
我想知道 printf() 函数的系统调用替代方案是什么? 例如,一个完全执行以下操作的函数?
char message[256] = "Hello";
printf("Message is : %s\n", message);
我尝试过 write(),但它不需要格式说明符。
【问题讨论】:
-
如果已经有一个方便的系统调用来做同样的事情,为什么有人会写
printf? -
这听起来像是 XY 问题。你到底想达到什么目的?
-
您必须使用
write来实现格式说明符。看看我的printf的源码就知道了:github.com/JL2210/minilibc/blob/master/src/stdio/vfprintf.c或者你也可以看看musl(不过只是学习有点复杂):git.musl-libc.org/cgit/musl/tree/src/stdio/vfprintf.c -
@MisterTusk:评论不是为了回答这个问题。他们的目的是要求澄清或有限讨论。
-
@MisterTusk 给你的任务是不可能的或者你应该编写自己的代码来进行格式化。我赌的是后者。例如,实现您自己的类似
printf的函数,该函数不依赖于任何库函数并且仅使用系统调用执行其输出,这可能是一个合理的分配。
标签: c system-calls