[关闭]
@skyway 2015-04-14T12:55:32.000000Z 字数 2490 阅读 1212

fopen和open

C++ fopen open

open函数


  1. #include<fcntl.h>
  2. int open(constchar*pathname,intflags);
  3. int open(constchar*pathname,intflags,mode_tmode);
  4. /*
  5. 返回值:成功则返回文件描述符,否则返回-1
  6. access 访问模式,宏定义和含义如下:
  7. O_RDONLY 1 只读打开
  8. O_WRONLY 2 只写打开
  9. O_RDWR 4 读写打开
  10. 还可选择以下模式与以上3种基本模式相与:
  11. O_CREAT 0x0100 创建一个文件并打开
  12. O_TRUNC 0x0200 打开一个已存在的文件并将文件长度设置为0,其他属性保持
  13. O_EXCL 0x0400 未使用
  14. O_APPEND 0x0800 追加打开文件
  15. O_TEXT 0x4000 打开文本文件翻译CR-LF控制字符
  16. O_BINARY 0x8000 打开二进制字符,不作CR-LF翻译
  17. mode 该参数仅在access=O_CREAT方式下使用,其取值如下:
  18. S_IFMT 0xF000 文件类型掩码
  19. S_IFDIR 0x4000 目录
  20. S_IFIFO 0x1000 FIFO 专用
  21. S_IFCHR 0x2000 字符专用
  22. S_IFBLK 0x3000 块专用
  23. S_IFREG 0x8000 只为0x0000
  24. S_IREAD 0x0100 可读
  25. S_IWRITE 0x0080 可写
  26. S_IEXEC 0x0040 可执行
  27. */

fopen函数

  1. #include <stdio.h>
  2. FILE *fopen(char *filename, char *mode);
  3. /*
  4. filename 文件名称
  5. mode 打开模式:
  6. r 只读方式打开一个文本文件
  7. rb 只读方式打开一个二进制文件
  8. w 只写方式打开一个文本文件
  9. wb 只写方式打开一个二进制文件
  10. a 追加方式打开一个文本文件
  11. ab 追加方式打开一个二进制文件
  12. r+ 可读可写方式打开一个文本文件
  13. rb+ 可读可写方式打开一个二进制文件
  14. w+ 可读可写方式创建一个文本文件
  15. wb+ 可读可写方式生成一个二进制文件
  16. a+ 可读可写追加方式打开一个文本文件
  17. ab+ 可读可写方式追加一个二进制文件
  18. */

区别

文件描述符

是个很小的正整数,它是一个索引值,指向内核为每一个进程所维护的该进程打开文件的记录表。用以标明每一个被进程所打开的文件和socket。

【注】用open打开或者是创建一个文件时,open函数此时会返回一个文件描述符,此时该文件描述符只能用于write或者是read,不能在某个函数里面同时用同一个文件描述符来供write和read调用,除非调用了close关闭了该文件描述符。

相关函数

  1. #include <unistd.h>
  2. size_t write(int fildes,const void *buf,size_t nbytes);
  3. /*
  4. 参数说明:
  5. fildes:与文件相对应的文件描述符,可通过调用open函数获取
  6. buf:存放将写入文件的数据,可以是字符串,也可是其他数据。其中buf是指向字符串的指针
  7. nbytes:需写进文件的字节数
  8. 返回值:
  9. -1:写入失败
  10. 0:写入0个字节
  11. x:已写入x个字节
  12. */
  13. size_t read(int fildes,char *buf,size_t nbytes);
  14. /*
  15. 参数说明:
  16. fildes:文件描述符
  17. buf:存放从文件中读取的数据
  18. nbytes:希望读取的直接数
  19. 返回值:
  20. -1:读取失败
  21. 0:读取0个字节
  22. x:已读取x个字节
  23. */
  24. int close(int fildes);
  25. /*
  26. 参数:
  27. fildes:文件描述符
  28. 返回:
  29. success:0
  30. fail:-1
  31. */
  32. #include <stdio.h>
  33. int fgetc(FILE *stream);
  34. int getc(FILE *stream);
  35. int getchar();
  36. int fputc(int c FILE *stream);
  37. int putc(int c,FILE *stream);
  38. int putchar(int c);

fgetc是从文件流中读取下一个字符,getchar则是从标准输入中读取下一个字符,标准输入可以是我们的终端。fputc与putchar的区别与上面类似。

以上内容来自以下网络文章汇总:
http://www.cnblogs.com/hnrainll/archive/2011/08/16/2141365.html
http://blog.sina.com.cn/s/blog_6f3ff2c90100mph8.html
http://kshaojun.cool.blog.163.com/blog/static/12993731220099201193045/

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注