LinuxSir.cn,穿越时空的Linuxsir!

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

帮看一下这个程序为什么不用指针!

[复制链接]
发表于 2003-9-14 00:22:10 | 显示全部楼层 |阅读模式

  1. #include <unistd.h>
  2. #include <sys/stat.h>
  3. #include <fcntl.h>
  4. #include <stdlib.h>

  5. int main(void)
  6. {
  7.         char c;
  8.         int in,out;/*in、out为什么不用file *in,out*/
  9.        
  10.         in=open("file.in",O_RDONLY);
  11.         out=open("file.out",O_WRONLY|O_CREAT,S_IRUSR|S_IWUSR);
  12.         while(read(in,&c,1) == 1)
  13.                 write(out,&c,1);
  14. return 0;
  15. }
复制代码
发表于 2003-9-14 05:49:49 | 显示全部楼层
open read write 是 unix 下的系统调用。
返回的是一个非负整数,称之为文件描述符,任何时候文件的输入输出都是通过文件描述符来标识文件,而不是通过文件名。
以上引自 K&R.

兄弟可能跟 c 标准库里的 fread 系列函数混在一起了吧!它们返回的是一个文件型指针 FILE *
发表于 2003-9-14 13:05:20 | 显示全部楼层

从quanliking的图像看他的武功进步

追求kiss恐怕就是向优雅和深邃的进步!
恭喜老兄!
发表于 2003-9-14 13:06:00 | 显示全部楼层
在unix下文件操作有两组操作函数
原始IO和带缓冲的IO

原始IO就是read write 等 执行时直接写文件

带缓冲的读写(fread fwrite)时是对缓冲区进行读写
写到文件的时间由操作系统决定
如果最后没有使用fclose 那么缓冲区内数据可能没有写到文件中而造成数据丢失
 楼主| 发表于 2003-9-14 17:19:15 | 显示全部楼层
按我理解无双版主讲fclose的意思。fclose告诉操作系统文件的内容已经读取完,可以对该缓存里的数据写到文件里然后关闭该文件。是不是这个意思?
发表于 2003-9-14 17:41:40 | 显示全部楼层
fclose是先把缓冲区内内容刷新到硬盘上对应文件中
再调用close操作
 楼主| 发表于 2003-9-14 20:51:49 | 显示全部楼层
明白了,Thanks!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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