C:getchar()和putchar()

衔铁

所以我一直在教自己C,并且遇到过来自'stdio.h'的'getchar()'和'putchar()'方法。据我了解,'getchar()'从文本流中获取最新字符并将其存储到变量中,而'putchar()'则将其获取并输出到终端。

因此,我编写了以下代码:

    #import<stdio.h>

void main () {
    printf("Enter a character and it will be repeated back to you:\n");
    int c;
    while (c != EOF) {
        c = getchar();
        printf("You entered : ");
        putchar(c);
        printf("\n");
    }
}

我希望它能读取键盘输入并将其一次打印到屏幕上一个字符。例如,如果我键入“ home”,则输出为:

您输入了:h您输入了:o您输入了:m您输入了:e

但是相反,我得到了:

home您输入了:h您输入了:o您输入了:m您输入了:e

字符将作为即时打字打印,然后重复。我不太确定自己在做什么错,或者如果我做错了什么,只是不太了解这个概念。谁能解释这里发生了什么?

巴尔玛

您得到的输出是预期的。

除非您使用特定于OS的功能来更改终端设置,否则只有输入完整行时,终端输入才对应用程序可用。终端驱动程序对行进行缓冲,以允许您在提交之前进行编辑,并且在输入内容时回显您的输入。

输入该行后,每次调用都会getchar()从该行中检索一个字符(以及最后的换行符)。

然而,就是在你的程序无关你的问题的错误。c在进行首次分配之前正在测试此外,c != EOF测试还将检查来自先前迭代的输入,该迭代已尝试打印该输入,但您无法进行打印EOF

编写循环的更好方法是:

while ((c = getchar()) != EOF) {
    printf("You entered : ");
    putchar(c);
    printf("\n");
}

或者,如果合并的分配和测试令人困惑,则可以执行以下操作:

while (1) {
    c = getchar();
    if (c == EOF) {
        break;
    }
    puts("You entered: ");
    putchar(c);
    putchar('\n');
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

C语言中的Putchar和Getchar

来自分类Dev

了解C语言中的getchar()和putchar()

来自分类Dev

C-使用getchar和putchar交换字符

来自分类Dev

涉及getchar()和putchar()的C简单代码意外输出

来自分类Dev

在C中使用putchar和getchar删除多个空格

来自分类Dev

putchar()和getchar()循环说明

来自分类Dev

getchar()和putchar()函数背后的理论

来自分类Dev

通过getchar和putchar打印多行

来自分类Dev

使用 getchar() 和 putchar() 是否安全

来自分类Dev

在C语言中使用putchar和getchar删除多个空格

来自分类Dev

C编程语言,第1章练习1.10(Getchar和Putchar)

来自分类Dev

getchar / putchar,gets / puts和fgets / fputs(在C中)有什么区别?

来自分类Dev

使用 putchar() 和 getchar() 打印单个字符

来自分类Dev

关于 getchar()/putchar() 功能的说明

来自分类Dev

getchar / fgetc和putchar / fputc中的int和char之间的区别?

来自分类Dev

使用getchar()和putchar()输入和输出带有数组的字符集

来自分类Dev

我有两个与getchar()和putchar()有关的问题

来自分类Dev

用getchar()读入一段,并用循环和putchar()打印

来自分类Dev

使用命令行参数中的getchar和putchar编码程序以发送以进行解码

来自分类Dev

使用命令行参数中的getchar和putchar编码程序以发送以进行解码

来自分类Dev

getchar()!=''和getchar()=''

来自分类Dev

带有getchar()和EOF的C程序

来自分类Dev

C 编程,如果 getchar 和 _Bool

来自分类Dev

putc和putchar的性能?

来自分类Dev

putc和putchar的性能?

来自分类Dev

尝试了解c中的循环和getchar()

来自分类Dev

C语言中scanf和getchar之间的区别

来自分类Dev

尝试了解c中的循环和getchar()

来自分类Dev

在C中实现getchar

Related 相关文章

  1. 1

    C语言中的Putchar和Getchar

  2. 2

    了解C语言中的getchar()和putchar()

  3. 3

    C-使用getchar和putchar交换字符

  4. 4

    涉及getchar()和putchar()的C简单代码意外输出

  5. 5

    在C中使用putchar和getchar删除多个空格

  6. 6

    putchar()和getchar()循环说明

  7. 7

    getchar()和putchar()函数背后的理论

  8. 8

    通过getchar和putchar打印多行

  9. 9

    使用 getchar() 和 putchar() 是否安全

  10. 10

    在C语言中使用putchar和getchar删除多个空格

  11. 11

    C编程语言,第1章练习1.10(Getchar和Putchar)

  12. 12

    getchar / putchar,gets / puts和fgets / fputs(在C中)有什么区别?

  13. 13

    使用 putchar() 和 getchar() 打印单个字符

  14. 14

    关于 getchar()/putchar() 功能的说明

  15. 15

    getchar / fgetc和putchar / fputc中的int和char之间的区别?

  16. 16

    使用getchar()和putchar()输入和输出带有数组的字符集

  17. 17

    我有两个与getchar()和putchar()有关的问题

  18. 18

    用getchar()读入一段,并用循环和putchar()打印

  19. 19

    使用命令行参数中的getchar和putchar编码程序以发送以进行解码

  20. 20

    使用命令行参数中的getchar和putchar编码程序以发送以进行解码

  21. 21

    getchar()!=''和getchar()=''

  22. 22

    带有getchar()和EOF的C程序

  23. 23

    C 编程,如果 getchar 和 _Bool

  24. 24

    putc和putchar的性能?

  25. 25

    putc和putchar的性能?

  26. 26

    尝试了解c中的循环和getchar()

  27. 27

    C语言中scanf和getchar之间的区别

  28. 28

    尝试了解c中的循环和getchar()

  29. 29

    在C中实现getchar

热门标签

归档