putchar()vs printf() – 有区别吗?
我目前在第1.5.1章文件复制中并制作了如下程序:
#include /* copy input to output; 1st version */ main() { int c; c = getchar(); while (c != EOF) { putchar(c); c = getchar(); } }
如果我像这样运行它:
PS cc copy-0.c PS ./a Black Black White White Gray Gray
输出是我输入的。
这是我为实验目的而制作的一个程序:
#include /* copy input to output; 1st version */ main() { int c; c = getchar(); while (c != EOF) { printf("%c",c); c = getchar(); } }
它产生相同的结果,但putchar
和printf
之间有区别吗?
两者之间哪个更好用?
printf
是一个通用的打印function,可以使用100种不同的格式说明符,并打印正确的结果字符串。 putchar
,好吧,把一个角色放到屏幕上。 这也意味着它可能要快得多。
回到问题:使用putchar
打印单个字符。 再说一次,它可能要快得多。
我使用带有-S的printf(“a”)编译了一个示例,并在汇编代码中调用了putchar。 看起来当printf中只有一个char时,编译器会将其转换为putchar()。 我使用printf(“ab”)做了另一个例子,并调用了printf,并在%edi寄存器中显示了文本部分。
printf允许您以复杂的方式格式化字符串,替换整数和浮点数等字符串。
getchar和putchar获取并放置字符
我可以说,与putchar相比,printf在更多方面更有用。
在终端中更好地查看各自的手册页(man 3 printf man 3 putchar)
- Putchar:语法告诉我在屏幕上只打印一个字符。
- Printf:屏幕上的printf行或单词。 因此,当您想在屏幕上只显示一个字符时,请使用putchar。 要读取字符串,请使用gets函数。 要显示字符串,您可以使用puts()或printf。
区别在于putchar
打印一个字符,而printf
可以打印更多。
printf("%s\n", "this is a lot longer than one character");
通常,当您在终端上打印某些内容时,您需要使用换行符来结束它, '\n'
。 至少出于这个原因,我建议使用printf
,然后你就可以写了
printf("%c\n", c);
代替
putchar(c); putchar('\n');