while((c=getchar())!='a')怎么理解。?和while((c=getchar())!='\n')有什么区别?

看到网上说while((c=getchar())!='\n')是检测到字符是回车就退出循环,那while((c=getchar())!='a')是不是检测到a就退出呢

你说的很对,就是当检测输入的一个字符为'a'时,就退出下面的循环!
给你一个例子:
如下,当你输入一串字符123abc时,到字符a截止输出123
#include<stdio.h>
int main(void)
{
char c,i=0,buf[88]={0};
while((c=getchar())!='a'){
buf[i++]=c;
}
puts(buf);
}来自:求助得到的回答
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-01-13
理论上是这样,但实践中由于getchar函数要遇到回车符才开始真正读输入缓冲区。因此对于\n而言,目的是容易达到的,但对于后者按了a键时并不响应,也要等到回车符才往下运行。
不过在回车符后仍然检测到其中回车符前的任一个字符a就退出循环。

测试代码:
#include <stdio.h>
int main(int argc, char **argv)
{
char SWITCH;
int c, i=0;
if(argc==1)
{
SWITCH = '\n';
}
else
{
if(argv[1][0] == 'n') SWITCH='\n';
else SWITCH=argv[1][0];
}
while((c=getchar()) != SWITCH)
{
printf("%d\n", i++);
}
}本回答被网友采纳
相似回答