LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 910|回复: 7

关于输入输出

[复制链接]
发表于 2005-5-12 21:41:56 | 显示全部楼层 |阅读模式
以前用命令:
$ cat
abcabc$

按了两次eof

现在自己写命令:
#include <stdio.h>

main()
{
    int c;

    while (c = getchar() != EOF)
           putchar(c);
}

编译执行,跟用cat一样,碰到上述情况,也要两个eof,根据我的代码,碰到一个eof,就应该退出,这其中有什么奥妙啊
谢谢
发表于 2005-5-12 22:00:39 | 显示全部楼层
是while ((c = getchar()) != EOF)吧??
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-5-12 23:13:02 | 显示全部楼层
Post by Tetris
是while ((c = getchar()) != EOF)吧??

对,贴错了,问题还是一样的,谢谢
回复 支持 反对

使用道具 举报

发表于 2005-5-12 23:59:41 | 显示全部楼层
我怎么一个EOF就退出了?和系统的cat完全一样。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-5-13 01:47:49 | 显示全部楼层
不会把,不要按回车,紧接着字符按ctrl-d
回复 支持 反对

使用道具 举报

发表于 2005-5-13 02:04:10 | 显示全部楼层
那当然,按ctrl-d只是通知tty驱动读取数据,如果没有数据驱动才认为是EOF。实际上基本没有EOF这个字符。你和系统的cat对比一下,完全一样的。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-5-13 18:45:13 | 显示全部楼层
Post by Tetris
那当然,按ctrl-d只是通知tty驱动读取数据,如果没有数据驱动才认为是EOF。实际上基本没有EOF这个字符。你和系统的cat对比一下,完全一样的。



也就是说通常情况下,按回车也是通知tty驱动读取数据。虽然不太懂。Tetris 你真是太强了,
能谈一下你的学习过程吗???
回复 支持 反对

使用道具 举报

发表于 2005-5-13 22:30:40 | 显示全部楼层
Post by wanglej
也就是说通常情况下,按回车也是通知tty驱动读取数据。虽然不太懂。Tetris 你真是太强了,
能谈一下你的学习过程吗???


你可以看看底层IO那一章就比较清楚了。
学习过程啊……好像没什么特别的,就是对编程比较有兴趣。
很想好好学内核,但是无从入手,呵呵,谁可以指点一下?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表