15

我目前在第 1.5.1 章文件复制中,并制作了这样的程序:

#include <stdio.h>

/* copy input to output; 1st version */
main()
{
    int c;

    c = getchar();
    while (c != EOF) {
        putchar(c);
        c = getchar();
    }
}

如果我这样运行它:

PS <..loc..> cc copy-0.c
PS ./a
Black
Black
White
White
Gray
Gray

输出就是我输入的。

这是我为实验目的制作的一个程序:

#include <stdio.h>

/* copy input to output; 1st version */
main()
{
    int c;

    c = getchar();
    while (c != EOF) {
        printf("%c",c);
        c = getchar();
    }
}

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

两者之间哪个更好用?

4

5 回答 5

29

printf是一个通用的打印函数,可以使用 100 种不同的格式说明符并打印正确的结果字符串。putchar,好吧,将一个角色放到屏幕上。这也意味着它可能要快得多。

回到问题:用于putchar打印单个字符。同样,它可能要快得多。

于 2014-05-20T01:53:09.703 回答
9

printf("a")我使用with编译了一个示例,并在汇编代码中-S调用。putchar

看起来当您在printf编译器中只有一个 char 时会将其转换为putchar().

我用%edi 寄存器中的文本部分使用printf("ab")and got call做了另一个示例。printf

于 2015-08-01T16:43:56.723 回答
0

不同之处在于putchar打印一个字符而printf可以打印更多。

printf("%s\n", "this is a lot longer than one character");

通常,当您将某些内容打印到终端时,您希望以换行符结束它,'\n'. 至少出于这个原因,我建议使用printfas 然后你可以写

printf("%c\n", c);

代替

putchar(c);
putchar('\n');
于 2014-05-20T01:52:12.097 回答
0

printf 允许您以复杂的方式格式化字符串,替换诸如整数、浮点数和其他字符串之类的东西。

getchar 和 putchar 获取和放置字符

我可以说与 putchar 相比,printf 在更多方面更有用。

最好在终端中查看各自的手册页( man 3 printf man 3 putchar )

于 2014-05-20T01:54:20.690 回答
0
  1. Putchar :按照语法说明,只在屏幕上打印一个字符。
  2. Printf :屏幕上的 printf 行或单词。因此,当您只想在屏幕上显示一个字符时,请使用 putchar。要读取字符串,请使用gets 函数。要显示字符串,您可以同时使用 puts() 或 printf。
于 2014-05-20T02:52:29.550 回答