关于标准IO流的几个问题请教各位大侠

challchampion 2009-12-23 10:44:00
以下问题均采用linux环境
1、一个文件可以关联几个标准IO流?
2、标准IO流的输入输出所用的缓冲区是同一个缓冲区吗?
3、标准IO流的打开函数fopen等所创建的文件是指在磁盘上创建一个文件还是只是创建一个流呀?
4、看书上讲,一次成功的ungetc调用会清除流的文件结束标志,这个原因是什么?
...全文
86 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
do_fork 2009-12-23
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 challchampion 的回复:]
我的问题问法可能有些问题,应该问的是:对于同一个文件,有没有输入流和输出流的区分?如果有,这两个流是使用各自独立的两个缓冲区吗?如果是的话,那么如果输出流改变了文件的内容,这个时候输入流是不是就是无效的数据了?
[/Quote]

依赖具体实现,可以看看glibc的标准IO实现,讲10000字也不如看1000行代码来的透彻
challchampion 2009-12-23
  • 打赏
  • 举报
回复
我的问题问法可能有些问题,应该问的是:对于同一个文件,有没有输入流和输出流的区分?如果有,这两个流是使用各自独立的两个缓冲区吗?如果是的话,那么如果输出流改变了文件的内容,这个时候输入流是不是就是无效的数据了?
macrojj 2009-12-23
  • 打赏
  • 举报
回复
标准IO流的打开函数fopen等所创建的文件是指在磁盘上创建一个文件还是只是创建一个流呀?

流啊
如果有文件的时候 根本不用创建文件
guzhijie1981 2009-12-23
  • 打赏
  • 举报
回复
1;个人理解这个问法有问题;我理解的标准IO流是;标准输入;标准输入;标准错误;分别用stdin;stdout;stderr表示;文件流和其他IO流不是进程开始就打开的;而3个标准的I0流是打开的;
2;个人认为是不一样的;理由是你输入的同时可以输出;
3;fopen是创建1个流;个人觉得也是创建文件;在linux下一切都是文件;而流是C语言层次的概念;FILE结构体封装了文件描述符;也就是用open返回的值;而这个在内核中就表示一个文件;
4;我没有使用过这个函数;Google结果如下 功 能: 把一个字符退回到输入流中 ;一个流的结束用EOF;也就是end of file;各个OS实现不一样;就像用\0表示字符串结束;我们用EOF表示文件;或者说流的结束;


另外;看来我又得看书了;55555
do_fork 2009-12-23
  • 打赏
  • 举报
回复
1. 很多个
2. 不是
3. 创建是在文件系统中创建,不是在磁盘中。创建文件,并关联到流。
4. 因为缓冲区又有东西了,显然流不应该被认为已经结束。
冻结 2009-12-23
  • 打赏
  • 举报
回复
我也正在被这些东西困扰。
正在《Linux 程序设计》。
精神上顶你。

69,373

社区成员

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

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