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(); } } 

它产生相同的结果,但putcharprintf之间有区别吗?

两者之间哪个更好用?

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)

  1. Putchar:语法告诉我在屏幕上只打印一个字符。
  2. 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');