- 论坛徽章:
- 0
|
现在要一个程序记录输入的字符串的行数,也就是\n的个数(newline)。
而输入是否结束,则是用最后那个输入是否是EOF来决定的。
现在问题来了,输入结束我们一般就是一个回车键,但是回车键可能是'\n',也可能是是输入结束EOF吧......如果我写了一个程序,它如何判断我的输入结束了?
K&R的那本书里面写个程序倒是很简单,但是实现起来,似乎不具备可操作性?
- #include <stdio.h>
- /* count lines in input */
- main()
- {
- int c, nl;
- nl = 0;
- while ((c = getchar()) != EOF)
- if (c == '\n')
- ++nl;
- printf("%d\n", nl);
- }
复制代码
回车就是\n,输入啊,输入,啥时候到EOF啊?...
//我的OS是Ubuntu 6.10,在gnome下面用的模拟终端,程序用cc编译。
//试验发现只有'\n'和CTRL+D一起用时,才具有EOF的作用。
//否则,程序仍将处于等待输入状态。即在输入字母、数字、空格、tab后接CTRL+D不会有任何效果。
//照我看来,这样保证了每一行输入必须以\n结束......
//即使那个'\n'并不是测试者所期望的。(不然初始化那个计数器nl时就要用1而不是0了)
//总结出来的一点感想,如有错误请大家指正哈。
[ 本帖最后由 imonyse 于 2007-4-18 14:26 编辑 ] |
|