请教getchar问题

lzhmqq 2011-08-30 05:28:27


#include <stdio.h>

main()
{
int nc;
for (nc = 0; getchar() != EOF; ++nc)
printf("%d\n", nc);
}




#include <stdio.h>

main()
{
int nc;
int c = getchar();
for (nc = 0; c != EOF; ++nc)
printf("%d\n", nc);
}



问题:
1、两段代码输出为什么不一样?

2、第一段代码我输入n个字符,它就输出n+1个数,为什么?
...全文
90 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
grtstmann 2011-08-31
  • 打赏
  • 举报
回复
这个。。。还是调试一下的好。。。做做苦力,自己解决,蛮好!
深度抽象 2011-08-31
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 king_ss_ 的回复:]

这里不一样
第一段:
for (nc = 0; getchar() != EOF; ++nc)
输入n个字符nc为n,但是for循环还要再循环一次结束,nc就是n+1了。
第二段:
int c = getchar();
for (nc = 0; c != EOF; ++nc)
[/Quote]
第一个循环多次
第二个循环一次
仙度瑞城 2011-08-30
  • 打赏
  • 举报
回复
关于第二个..int c = getchar();
c获得的是getchar()字符串第一个字符的ASCII值..所以后面的for循环是个无限循环..

#include <stdio.h>

int main()
{
int nc;
int c = getchar();
for (nc = 0; c != EOF; ++nc)
printf("%d\n", nc);
return 0;
}

仙度瑞城 2011-08-30
  • 打赏
  • 举报
回复
告诉楼主一个发现回车符的方法...
运行下面代码..然后按回车键..每按一次回车键..你就会发现有一次输出..

#include <stdio.h>

int main()
{
int nc;
for (nc = 0; getchar() != EOF; ++nc)
printf("%d\n", nc);
return 0;
}
仙度瑞城 2011-08-30
  • 打赏
  • 举报
回复
温馨提示:把代码放在code=C/C++和/code中间

#include <stdio.h>

main()
{
int nc;
for (nc = 0; getchar() != EOF; ++nc)
printf("%d\n", nc);
}





#include <stdio.h>

main()
{
int nc;
int c = getchar();
for (nc = 0; c != EOF; ++nc)
printf("%d\n", nc);
}
hzy694358 2011-08-30
  • 打赏
  • 举报
回复
把getchar得到的字符打印出来就知道了
应该是多了一个回车符号
Kusk 2011-08-30
  • 打赏
  • 举报
回复
1. 第一段每次循环都会getchar(),第二段只getchar()了一次,之后循环用的永远是第一次getchar()的值。
2. 回车也算一个字符。
王仁勇 2011-08-30
  • 打赏
  • 举报
回复
单步跟踪一下就知道了。
king_ss_ 2011-08-30
  • 打赏
  • 举报
回复
这里不一样
第一段:
for (nc = 0; getchar() != EOF; ++nc)
输入n个字符nc为n,但是for循环还要再循环一次结束,nc就是n+1了。
第二段:
int c = getchar();
for (nc = 0; c != EOF; ++nc)

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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