标准C库对文件的操作

标准C库对文件的操作

一、概述:Linux文件编程中的open是UNIX系统(包括LINUX、Mac等)的系统调用函数,返回的是文件描述符(File Descriptor),他是文件在文件描述符表里的索引,区别于C语言库函数fopen。fopen是ANSI C标准中的C语言库函数,在不同的系统中应该调用不同的内核api。返回的是一个指向文件结构的指针。open是UNIX系统调用,移植性有限,而fopen是C标准函数,因此拥有良好的移植性。因为open返回的是文件描述符,而文件描述符在UNIX系统中是一个重要概念,UNIX下的一切设备都是以文件的形式操作的。而fopen是用来操控普通正规文件的。open函数离内核最近属于低级IO函数,速度快而fopen属于高级IO函数,有缓冲,速度较慢。低级文件IO运行在内核态,高级文件IO运行在用户态。前者得与read,write等函数配合使用,后者与fread,fwrite等配合使用。

二、相关函数:fopen,fwrite,fread,fclose,fputc,feof,fgetc。

三、函数fopen:

#include <stdio.h>

FILE *fopen(const char *path, const char *mode);
//返回值:成功返回指向该流的文件指针;失败返回NULL

① 功能:使用给定的模式mode打开filename所指向的文件。
② 参数:
*path:要打开的文件名称。
*mode:文件访问模式。

在这里插入图片描述
以 x 结尾的模式为独占模式,文件已存在或者无法创建(一般是路径不正确)都会导致 fopen 失败。文件以操作系统支持的独占模式打开。
上述的形态字符串都可以再加一个 b 字符,如 rb、w+b 或 ab+ 等组合,加入 b 字符用来告诉函数库以二进制模式打开文件。如果不加 b,表示默认加了 t,即 rt、wt,其中 t 表示以文本模式打开文件。由 fopen() 所建立的新文件会具有 S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH(0666) 权限,此文件权限也会参考umask值。
有些 C编译系统可能不完全提供所有这些功能,有的C版本不用"r+"、“w+”、“a+”,而用"rw"、“wr”、"ar"等,应注意所用系统的规定。

四、函数fwrite

#include <stdio.h>
size_t fwrite(const void *ptr, size_t size, size_t nmemb,FILE *stream);
//返回值:若成功,返回一个 size_t 对象,表示元素的总数,该对象是一个整型数据类型;若失败,返回值小于nmemb的值

①功能:把ptr所指向的数组中的数据写入到给定流stream中。
②参数:
*ptr:指向要被写入的元素数组的指针。
*size:要被写入的每个元素的大小,以字节为单位。
*nmemb:元素的个数,每个元素的大小为 size 字节。
*stream:指向 FILE 对象的指针,该 FILE 对象指定了一个输出流。

五、函数fread

#include <stdio.h>
size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
//返回值:若成功
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值