但愿不会被抛弃 发表于 2019-1-27 10:59:19

统计从键盘输入一行字符的个数

我的代码是这样紫的
#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:10:55

本帖最后由 行客 于 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:41:43

行客 发表于 2019-1-27 11:10
例子2中的
while(getchar()!='\n')
相当于连续的getchar()获取到值。


蟹蟹你啦,懂了真的讲得很细心哦,谢谢啦{:5_108:}
页: [1]
查看完整版本: 统计从键盘输入一行字符的个数