统计从键盘输入一行字符的个数
我的代码是这样紫的#include<stdio.h>
void main()
{
int a=0;
char ch;
printf("请输入一行字符:");
ch=getchar();
while(ch!='\n')
{
a++;
}
printf("%d",a);
}
//运行出来没有结果显示
小甲鱼的代码是这样子的
#include<stdio.h>
void main()
{
int a=0;
printf("请输入一行字符:");
getchar();
while(getchar()!='\n')
{
a++;
}
printf("%d",a);
}
//我不知道错在哪里,getchar()还是没弄清楚本质{:5_100:}
本帖最后由 行客 于 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)宏定义。
如有不明白的地方,请继续跟帖。 行客 发表于 2019-1-27 11:10
例子2中的
while(getchar()!='\n')
相当于连续的getchar()获取到值。
蟹蟹你啦,懂了真的讲得很细心哦,谢谢啦{:5_108:}
页:
[1]