putchar如何与while循环一起工作?

时间:2015-01-31 20:28:44

标签: c

我是c编程的新手,所以希望你们能帮我解决这些问题。

1。我以为putchar()每次只打印1个字符,而当我输入几个像'hello'的字符时,打印'hello'然后允许我输入下一个输入?我认为它应该只打印'h'然后允许我输入其他输入,因为getchar()每次只返回一个字符。

2。如何让循环停止?我知道EOF的值为-1,但是当我输入-1时,循环仍然运行。

#include <stdio.h>

main()
{   

    int c = getchar();

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

}

2 个答案:

答案 0 :(得分:1)

在第一个getchar()完成读取一个字符后,下一个getchar();while()循环内,因此根据逻辑,它将继续逐个读取输入一,直到遇到EOF

遵循相同的逻辑,putchar(c);位于while循环下,因此它将打印getchar()读取并存储在{{1}中的所有字符[每个循环一个字符] }}

在linux中,通过按 CTRL + D 生成c。在等待输入时,如果按下此组合键,终端驱动程序会将其转换为EOF并且EOF循环将中断。

我对窗口不是很确定,但关键组合应该是 CTRL + Z

注意:即使输入while似乎应该按照-1工作,实际上也不会。 EOF无法一次只读getchar()。在两次连续迭代中,它将被读作-1-。另外值得一提的是,字符 1不等于整数 1。一旦读取,字符 1将相应地进行编码[主要是ASCII]并且将存储相应的值。

答案 1 :(得分:0)

  1. getchar()从控制台获取输入。在while循环中,它将读取输入中的所有字符,包括返回键。

  2. -1是“-1”。它不是一个值,而只是另一个字符组合。当缓冲区中没有更多char时,会发生EOF。即按Enter键(或Ctrl-Z或Ctrl-D,具体取决于您的操作系统)