A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区


    char ch;
    scanf("%c",&ch);
    while (ch!='\n') {
        count++;
        scanf("%c",&ch);
    }
   
    printf("count = %d\n",count);

10 个回复

倒序浏览
一个水果(char)篮,里面有香蕉(int),苹果(float),葡萄(double)等等

叫你拿香蕉,你就只会拿香蕉
叫你拿苹果,你就只会拿苹果,
叫你拿水果呢.

系统会把缓冲区所有的内容都识别成char类型

你自己看看ascii表就懂了
回复 使用道具 举报
简单说缓冲区就是一个池子.把输入的文件汇总到这个池子里面.然后计算机再从池子里读取.首先count没有声明和初始化.其次程序的目的是检测又没有遇到换行(\n).当你第一次输入一个字符('a'),并以回车结束后.进入while的条件判断('a' != '\n'成立),进入循环count自增.然后要求再次输入.但是这时池子里面还有你上次剩下的回车,计算机就会直接读取这个回车.再次回到循环条件判断时条件不成立.巴拉巴拉
回复 使用道具 举报
现在看了大家的解释,感觉更清晰了
回复 使用道具 举报
何必ˇㄨ那么假 发表于 2016-3-16 00:44
1. 在执行scanf函数的时候,会让用户输入1个数据.
     数据输入完毕之后,并不是将这个数据直接赋值给变量.
...

非常感谢
回复 使用道具 举报
我是王觉瘦 发表于 2016-3-16 01:44
简单说缓冲区就是一个池子.把输入的文件汇总到这个池子里面.然后计算机再从池子里读取.首先count没有声明和 ...

您精准的回答了我提出的问题,给我解惑了。
我非常感谢。
回复 使用道具 举报
菜逼 发表于 2016-3-16 00:50
一个水果(char)篮,里面有香蕉(int),苹果(float),葡萄(double)等等

叫你拿香蕉,你就只会拿香蕉

哥们你举的真通俗,但是
我有点疑惑,是不是定义变量时都可以定义为char型,因为它适合所有格式
char type = 'a'/ type = 1 /type = 1.00f /type  = 1.1
这样行吗?
回复 使用道具 举报
66 加油 加油
回复 使用道具 举报
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马