标题:关于getchar的
只看楼主
daienkai
Rank: 1
等 级:新手上路
帖 子:30
专家分:7
注 册:2017-1-31
结帖率:100%
已结贴  问题点数:20 回复次数:10 
关于getchar的
#include<stdio.h>
void main( ){
    int c;
    while( (c=getchar()) != '\n' )  //从控制台流中读取字符,直到按回车键结束  //这里为什么是不等于呢??  

//我怎么理解成了不等于回车时输出了呢    求讲解

        printf ("%c", c);  //输出读取内容
}
搜索更多相关主题的帖子: 控制台 
2017-02-06 16:29
zbjzbj
Rank: 12Rank: 12Rank: 12
来 自:郑州
等 级:贵宾
威 望:52
帖 子:620
专家分:3020
注 册:2011-4-22
得分:3 
为输入数据设置结束条件,否则就成了死循环。按回车键结束输入。当然,你也可以设置成按其他键结束。比如按a键结束
2017-02-06 16:34
daienkai
Rank: 1
等 级:新手上路
帖 子:30
专家分:7
注 册:2017-1-31
得分:0 
回复 zbjzbj
可是条件是不等于回车啊  我调试的时候按回车是结束啊  我输入第一个假如是a  那a!='\n'啊  按说就得输出了啊  

这是咋回事啊  不理解了
2017-02-06 16:40
ldsh304
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:7
帖 子:242
专家分:755
注 册:2016-1-18
得分:3 
回复 3楼 daienkai
getchar()只有接收到回车的时候才会结束,并不是输入一个字符他就接收了
2017-02-06 17:03
zbjzbj
Rank: 12Rank: 12Rank: 12
来 自:郑州
等 级:贵宾
威 望:52
帖 子:620
专家分:3020
注 册:2011-4-22
得分:0 
回复 3楼 daienkai
不等于回车时执行大括号中的语句,本题只有一句,就是print语句,大括号省略了。等于回车时,while中条件不成立,跳过while语句组合。
2017-02-06 17:57
cuichengde19
Rank: 1
等 级:新手上路
帖 子:22
专家分:3
注 册:2017-2-6
得分:3 
不等于('\n')一直循环
等于('\n')就退出循环   一开始就是死循环
2017-02-06 18:12
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
得分:3 
while((a = getchar()) != '\n')

你输入一个字符c,然后按下回车,但是循环却中止了,这是因为,你实际上输入了两个字符,一个字符c,一个回车,第一次,c被赋值给变量a,但是回车依旧留在缓冲区,于是在执行了Printf()语句之后,回车被赋值给变量a,于是判断为假,结束循环。

09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-02-06 18:15
bjut_Allen
Rank: 9Rank: 9Rank: 9
来 自:平乐园工业技术学校
等 级:蜘蛛侠
威 望:8
帖 子:323
专家分:1223
注 册:2016-10-16
得分:3 
while( (c=getchar()) != '\n' )
可以写成
c=getchar();
while(c!='\n')
好理解一些

Code is my life.
2017-02-06 18:55
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
得分:3 
多余的字符会留在缓冲区~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-02-07 07:06
ICU
Rank: 4
等 级:业余侠客
威 望:2
帖 子:92
专家分:268
注 册:2017-1-14
得分:3 
此程序可以解答楼主相关疑问:

int main(int argc, char* argv[])
{
           
         while(1)printf("%d\n",getchar());
   
    return 0;
}
2017-02-07 13:41



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-474026-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.095317 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved