本帖最后由 行客 于 2019-1-27 11:23 编辑
例子2中的
while(getchar()!='\n')
相当于连续的getchar()获取到值。
你的第一个例子,其实就getchar()了1次,相当于只获得了1次getchar()的结果。由于你只获得了1次getchar(),所以ch值不会发生变化,因此你程序执行,输入字符回车后,就进入无限循环。程序不报错,也不退出。
第二个例子也有问题,你注意下注释:
- #include<stdio.h>
- void main()
- {
- int a=0;
- printf("请输入一行字符:");
- //getchar(); //这里不应该提前获取一个字符。如果不注释掉这句话,你的打印出的数字会少1。
- while(getchar()!='\n')
- {
- a++;
- }
- printf("%d\n",a);
- }
复制代码
另外,看看以下的说明加强理解吧:
头文件:#include <stdio.h>
函数getchar()用于从标准输入控制台读取字符,原型如下:
int getchar(void);
【参数】该函数没有参数。
【返回值】函数的返回值为用户输入的第一个字符的ASCII码,若出错返回-1,且将用户输入的字符回显到屏幕。如果用户在按回车键之前输入了不只一个字符,其他字符会保留在键盘缓冲区中,等待后续getchar()调用读取。也就是说,后续的getchat()调用不会等待用户按键,而是直接读取缓冲区中的字符,直到缓冲区的字符读取完毕后,才等待用户按键。
【说明】getchar()非真正函数,而是getc(stdin)宏定义。
如有不明白的地方,请继续跟帖。