我知道你可以用printf()和puts()进行打印。我还可以看到printf()允许您插入变量并进行格式化。
是puts()仅仅是printf()的原始版本。它是否应该用于所有可能的printf()而不进行字符串插值?
我知道你可以用printf()和puts()进行打印。我还可以看到printf()允许您插入变量并进行格式化。
是puts()仅仅是printf()的原始版本。它是否应该用于所有可能的printf()而不进行字符串插值?
当前回答
printf可以被认为是一个更强大的版本。Printf提供了使用格式说明符(如%s, %d, %lf等)格式化输出变量的能力。
其他回答
printf可以被认为是一个更强大的版本。Printf提供了使用格式说明符(如%s, %d, %lf等)格式化输出变量的能力。
当比较puts()和printf()时,尽管它们的内存消耗几乎相同,但puts()比printf()花费更多的时间。
在简单的情况下,编译器将printf()调用转换为puts()调用。
例如,下面的代码将被编译为下面显示的程序集代码。
#include <stdio.h>
main() {
printf("Hello world!");
return 0;
}
push rbp
mov rbp,rsp
mov edi,str.Helloworld!
call dword imp.puts
mov eax,0x0
pop rbp
ret
在本例中,我使用GCC 4.7.2版本,并使用GCC -o hello hello.c编译源代码。
Puts比printf简单,但注意前者会自动添加换行符。如果这不是你想要的,你可以fputs你的字符串到stdout或使用printf。
int puts(const char *s);
Puts()将字符串s和后面的换行符写入stdout。
int printf(const char *format, ...);
函数printf()在格式字符串的控制下将输出写入stdout,该格式字符串指定如何将后续参数转换为输出。
我将利用这个机会请您阅读文档。