while(ch=getchar() !=EOF && ch != '\n');有什么意义呢?

goodboy5201314 2009-10-29 05:25:27
while(ch=getchar() !=EOF && ch != '\n')
;
请问这行有什么意义呢??
是在《C和指针》这本书里的第一题!
...全文
2390 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
wupeifu 2011-03-04
  • 打赏
  • 举报
回复
支持!!
[Quote=引用 6 楼 arong1234 的回复:]

这个题目肯定不会如出题的人那么工作。由于=的优先级最低,这个循环等价于
while(ch=(getchar() !=EOF && ch != '\n'))
;
ch将是一个没有初始化的变量,从而导致编译错误。

引用楼主 goodboy5201314 的回复:
while(ch=getchar() !=EOF && ch != '\n')
……
[/Quote]
rainybabylove 2010-06-17
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <memory.h>
void main ( void )
{
char ch;
int num[26], i;
memset (num, 0, 26*sizeof(int)); //初始化数组num
while ((ch = getchar( )) != '\n')
//输入字符串,判断统计
if (ch >= 'A' && ch <= 'Z') //是否为大写字母
num[ch-'A']++;
for (i = 0; i < 26; i++) //输出结果
{
if (i % 9 == 0)
printf ("\n");
printf ("%c(%d) ", 'A'+i, num[i]);
}
printf ("\n");
smallbear_2008 2010-01-05
  • 打赏
  • 举报
回复
楼主为什么不问过滤的必要性呢?以及这个语句为什么能实现过滤功能呢?
goodboy5201314 2009-10-30
  • 打赏
  • 举报
回复
嘻嘻,不好意思哦,原来程序后边有解释的。是将多余的输入过滤而已!感谢各位哦!
BePatient 2009-10-29
  • 打赏
  • 举报
回复
while(ch=getchar() !=EOF && ch != '\n') ;

执行顺序是:
step1. getchar != EOF
step2. ch = (getchar() != EOF), 所以ch只会等于1或0,等于0就推出while
如果ch=1,即getchar() != EOF,则有
step3. ch != '\n'

所以这个while只有输入EOF才可以退出。
walkersfaint 2009-10-29
  • 打赏
  • 举报
回复
就是一个判断循环条件的,

当遇到结束或者回车停止循环
HONG_1009 2009-10-29
  • 打赏
  • 举报
回复
就是读取一行字符 直到结束或者换行符,
phpjspasp 2009-10-29
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 arong1234 的回复:]
这个题目肯定不会如出题的人那么工作。由于=的优先级最低,这个循环等价于
while(ch=(getchar() !=EOF && ch != '\n'))
    ;
ch将是一个没有初始化的变量,从而导致编译错误。

引用楼主 goodboy5201314 的回复:
while(ch=getchar() !=EOF && ch != '\n')
    ;
请问这行有什么意义呢??
是在《C和指针》这本书里的第一题!

[/Quote]

这个说的对。
sunkunlun 2009-10-29
  • 打赏
  • 举报
回复
主要的目的为下次读取数据做准备。
如:输入csdn并回车,输入流中保存的内容为csdn\n,而scanf读取输入是只取了csdn,‘\n’还在输入流里,如果直接读取下一个值就会读到'\n',而非自己想要的值
arong1234 2009-10-29
  • 打赏
  • 举报
回复
这个题目肯定不会如出题的人那么工作。由于=的优先级最低,这个循环等价于
while(ch=(getchar() !=EOF && ch != '\n'))
;
ch将是一个没有初始化的变量,从而导致编译错误。

[Quote=引用楼主 goodboy5201314 的回复:]
while(ch=getchar() !=EOF && ch != '\n')
    ;
请问这行有什么意义呢??
是在《C和指针》这本书里的第一题!
[/Quote]
butwang 2009-10-29
  • 打赏
  • 举报
回复
EOF=-1 ctr+c
'\n' = 10
cphj 2009-10-29
  • 打赏
  • 举报
回复
简单地说就是读一行字符

如果遇到回车或者结束符就终止循环
goodboy5201314 2009-10-29
  • 打赏
  • 举报
回复
如果是的话会怎么样呢?
zhaolinger2 2009-10-29
  • 打赏
  • 举报
回复
回答:
当程序从键盘获得了字符并且字符不是回车符的话,执行循环里的操作。
每获得一个非回车符的字符,执行一次循环操作。
chenyu2202863 2009-10-29
  • 打赏
  • 举报
回复
输入的字符不是结束符且也不是'\n'

70,037

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧