我是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();
}
}
答案 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)
getchar()从控制台获取输入。在while循环中,它将读取输入中的所有字符,包括返回键。
-1是“-1”。它不是一个值,而只是另一个字符组合。当缓冲区中没有更多char时,会发生EOF。即按Enter键(或Ctrl-Z或Ctrl-D,具体取决于您的操作系统)