首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >while(getchar() !=多个参数)

问while(getchar() !=多个参数)
EN

Stack Overflow用户
提问于 2011-11-06 21:16:41
回答 8查看 1.6K关注 0票数 0

如何使用getchar作为while循环的条件,并在(c=getchar()) = EOF或'\n‘或'\0’时终止循环。

我试过了:

代码语言:javascript
复制
int c=0;
while((c=getchar()) != EOF || '\n' || '\0'){
putchar();
}

如果我输入天气(+enter),这就不起作用了。它没有终止循环。

我怎么才能让它工作呢?

把我读成英文

EN

回答 8

Stack Overflow用户

发布于 2011-11-06 21:20:51

你可以使用类似这样的东西:

代码语言:javascript
复制
int c = 0;
while((c=getchar()) != EOF) {
  if ((c == 0) || (c == '\n'))
    break;
  putchar(c);
}
票数 5
EN

Stack Overflow用户

发布于 2011-11-06 21:47:19

代码语言:javascript
复制
while ((c = getchar()) != EOF && c != '\n' && c != '\0')
{
  // loop body
}

这是因为&&运算符a)总是首先计算LHS表达式,b)引入序列点,因此LHS表达式中的任何副作用(例如将getchar的结果赋给c)将在计算RHS表达式之前应用。

票数 3
EN

Stack Overflow用户

发布于 2011-11-06 21:26:26

我认为这应该行得通:

代码语言:javascript
复制
int c;
while( (c=getchar()) != EOF && c!='\n' && c!='\0') {
    putchar();
}

但这样做可能更好:

代码语言:javascript
复制
int c=getchar();
while( c != EOF && c!='\n' && c!='\0'){
    putchar();
    c=getchar();
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8027213

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档