《C程序设计语言》(Dennis M. Ritchie Brian W. Kernighan)中一个例题看不懂

chlth007 2014-08-16 05:16:51
#include <stdio.h>
main()
{
int c, n1;

n1 = 0;
while ((c=getchar()) != EOF)
if (c == '\n')
++n1;
printf("%d\n", n1);
}

这是统计行数了,怎么用???
...全文
170 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
wanght99 2014-08-16
  • 打赏
  • 举报
回复
引用 11 楼 chlth007 的回复:
引用 7 楼 wanght99 的回复:
[quote=引用 6 楼 chlth007 的回复:] [quote=引用 5 楼 wanght99 的回复:] [quote=引用 3 楼 chlth007 的回复:] [quote=引用 1 楼 wanght99 的回复:] 执行程序, 随便敲内容, 满意了之后告知程序输完了(Linux是Ctrl-D, Windows好像是Ctrl-Z), 然后程序会输出你输入的总行数.
不管用啊。是我没操作好、?
你是怎么执行的? 现象是什么? 是不是你输入完之后窗口直接关闭了?[/quote] 好了,我忘了敲回车了。请问Ctrl-Z是做什么的,我看完一本书了,没遇到这个东东,能讲解一下吗?[/quote] EOF是文件到末尾的工具, 但从终端没法直接输入EOF, 所以就把让Ctrl-Z起到EOF的作用, 按Ctrl-Z的时候, getchar()就返回EOF了.[/quote]请问第七行中的c我可以定义成char吗?与定义成int有什么区别?[/quote] 不能改成char getchar返回的是Int, 之所以不返回char就是为了区分EOF, char的值域是0-255, EOF跟任何 char的值不一样, 这样才能起到区分的作用. 你如果把c写成char, 那就会发生强制类型转换, 转换成char值之后, 就没法再判断EOF了.
chlth007 2014-08-16
  • 打赏
  • 举报
回复
引用 7 楼 wanght99 的回复:
引用 6 楼 chlth007 的回复:
[quote=引用 5 楼 wanght99 的回复:] [quote=引用 3 楼 chlth007 的回复:] [quote=引用 1 楼 wanght99 的回复:] 执行程序, 随便敲内容, 满意了之后告知程序输完了(Linux是Ctrl-D, Windows好像是Ctrl-Z), 然后程序会输出你输入的总行数.
不管用啊。是我没操作好、?
你是怎么执行的? 现象是什么? 是不是你输入完之后窗口直接关闭了?[/quote] 好了,我忘了敲回车了。请问Ctrl-Z是做什么的,我看完一本书了,没遇到这个东东,能讲解一下吗?[/quote] EOF是文件到末尾的工具, 但从终端没法直接输入EOF, 所以就把让Ctrl-Z起到EOF的作用, 按Ctrl-Z的时候, getchar()就返回EOF了.[/quote]请问第七行中的c我可以定义成char吗?与定义成int有什么区别?
chlth007 2014-08-16
  • 打赏
  • 举报
回复
引用 8 楼 u012421456 的回复:
顾名思义,统计输入内容的行数 EOF的用法——http://nylzhaowei.blog.163.com/blog/static/14303922006112012447234/
谢谢
chlth007 2014-08-16
  • 打赏
  • 举报
回复
引用 7 楼 wanght99 的回复:
引用 6 楼 chlth007 的回复:
[quote=引用 5 楼 wanght99 的回复:] [quote=引用 3 楼 chlth007 的回复:] [quote=引用 1 楼 wanght99 的回复:] 执行程序, 随便敲内容, 满意了之后告知程序输完了(Linux是Ctrl-D, Windows好像是Ctrl-Z), 然后程序会输出你输入的总行数.
不管用啊。是我没操作好、?
你是怎么执行的? 现象是什么? 是不是你输入完之后窗口直接关闭了?[/quote] 好了,我忘了敲回车了。请问Ctrl-Z是做什么的,我看完一本书了,没遇到这个东东,能讲解一下吗?[/quote] EOF是文件到末尾的工具, 但从终端没法直接输入EOF, 所以就把让Ctrl-Z起到EOF的作用, 按Ctrl-Z的时候, getchar()就返回EOF了.[/quote]谢谢
百曉生 2014-08-16
  • 打赏
  • 举报
回复
顾名思义,统计输入内容的行数 EOF的用法——http://nylzhaowei.blog.163.com/blog/static/14303922006112012447234/
wanght99 2014-08-16
  • 打赏
  • 举报
回复
引用 6 楼 chlth007 的回复:
引用 5 楼 wanght99 的回复:
[quote=引用 3 楼 chlth007 的回复:] [quote=引用 1 楼 wanght99 的回复:] 执行程序, 随便敲内容, 满意了之后告知程序输完了(Linux是Ctrl-D, Windows好像是Ctrl-Z), 然后程序会输出你输入的总行数.
不管用啊。是我没操作好、?
你是怎么执行的? 现象是什么? 是不是你输入完之后窗口直接关闭了?[/quote] 好了,我忘了敲回车了。请问Ctrl-Z是做什么的,我看完一本书了,没遇到这个东东,能讲解一下吗?[/quote] EOF是文件到末尾的工具, 但从终端没法直接输入EOF, 所以就把让Ctrl-Z起到EOF的作用, 按Ctrl-Z的时候, getchar()就返回EOF了.
chlth007 2014-08-16
  • 打赏
  • 举报
回复
引用 5 楼 wanght99 的回复:
引用 3 楼 chlth007 的回复:
[quote=引用 1 楼 wanght99 的回复:]
执行程序, 随便敲内容, 满意了之后告知程序输完了(Linux是Ctrl-D, Windows好像是Ctrl-Z), 然后程序会输出你输入的总行数.
不管用啊。是我没操作好、?

你是怎么执行的? 现象是什么? 是不是你输入完之后窗口直接关闭了?[/quote]
好了,我忘了敲回车了。请问Ctrl-Z是做什么的,我看完一本书了,没遇到这个东东,能讲解一下吗?
wanght99 2014-08-16
  • 打赏
  • 举报
回复
引用 3 楼 chlth007 的回复:
引用 1 楼 wanght99 的回复:
执行程序, 随便敲内容, 满意了之后告知程序输完了(Linux是Ctrl-D, Windows好像是Ctrl-Z), 然后程序会输出你输入的总行数.
不管用啊。是我没操作好、?
你是怎么执行的? 现象是什么? 是不是你输入完之后窗口直接关闭了?
chlth007 2014-08-16
  • 打赏
  • 举报
回复
引用 2 楼 zxh707wk 的回复:
引用 1 楼 wanght99 的回复:
执行程序, 随便敲内容, 满意了之后告知程序输完了(Linux是Ctrl-D, Windows好像是Ctrl-Z), 然后程序会输出你输入的总行数.
+1
具体怎么操作,我怎么操作不好呢。
chlth007 2014-08-16
  • 打赏
  • 举报
回复
引用 1 楼 wanght99 的回复:
执行程序, 随便敲内容, 满意了之后告知程序输完了(Linux是Ctrl-D, Windows好像是Ctrl-Z), 然后程序会输出你输入的总行数.
不管用啊。是我没操作好、?
wanght99 2014-08-16
  • 打赏
  • 举报
回复
执行程序, 随便敲内容, 满意了之后告知程序输完了(Linux是Ctrl-D, Windows好像是Ctrl-Z), 然后程序会输出你输入的总行数.

69,369

社区成员

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

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