C语言 文件操作

发布于:2025-08-10 ⋅ 阅读:(19) ⋅ 点赞:(0)

标准IO

  • C语言标准库中的文件操作函数
fopen fread fwrite fclose fprintf
  • 在成功调用这些函数后,返回一个文件的指针,失败返回NULL
FILE *fopen(path,mode);   //以mode方式打开文件
/*mode各种模式
 r	只读,返回一个指向文件开头的指针
 r+	读写,返回一个指向文件开头的指针
	
 w	只写,创建一个文件或清空文件的数据,返回一个指向文件开头的指针
 w+	读写,只写,创建一个文件或清空文件的数据,返回一个指向文件开头的指针

 a	追加,不存在则创建一个文件,返回指向文件末尾的指针
 a+	读和追加,不存在则创建一个文件,如果读文件则返回一个指向开头的指针,输入则是在结尾
 
 b	打开二进制文件
*/
size_t fread(*ptr,size,nmemb,FILE* 文件);
//		  存储指针,读取字节数,读取次数,目标文件
//返回值:返回完整读取的nmemb数

//使用feof函数判断文件读完,到文件末尾会返回非0值

size_t fwrite(*ptr,size,nmemb,FILE* 文件);
//		     数据指针,读取字节数,读取次数,目标文件
//返回值:返回完整读取的nmemb数

void fclose(FILE *文件);
//失败返回 EOF 

系统IO

  • 系统文件:操作系统直接提供的接口,直接与内核交互
头文件 typer.h \ stat.h uinstd.h fcntl.h unistd
函数 open read write close
int open(char *,int flag)
//权限随机,flag八进制0644
int open(char *,int flag,mode_t mode);
//如果文件创建时指定mode权限,仅在文件创建时生效,只能创建普通文件

size_t read(int fd,void *,size_t count);
//			文件

size_t write(int fd,void *,size_t count);
int close (int fd);
int rfd = open("a.txt",0_RDONLY);
if(rfd < 0)
    return -1;
int wfd = open("b.txt",0_RDONLY);
if(wfd < 0)
    return -1;
char buf[100];
int len = 0;
while(1)
{
    len = read(rfd,buf,sizeof(buf)-1);
    if(len <= 0)
        break;
    write(wfd,buf,len);    
}
close(rfd);
close(wfd);

差异

  • 缓存机制

    • 标准:默认使用缓冲区,数据先存入缓冲区,遇到行缓冲机制\n 或缓冲区满才会输出,减少系统调用次数,提升效率
    • 系统:没有默认缓冲区,每次都是系统调用,效率低
  • 跨平台性

    • 标准:接口c标注定义,与操作系统无关,统一代码可在不同平台运行
    • 系统:接口由系统决定,不能跨平台
  • 操作对象

    • 标准:操作对象是*FILE,其封装文件描述符、缓冲区信息
    • 系统:LINUX 操作对象是文件描述符,Windows 操作对象是句柄
  • 使用场景

    • 标准:通常在用户状态下进行,控制应用层,文件读写类
    • 系统:一般用于底层设备驱动文件等控制

网站公告

今日签到

点亮在社区的每一天
去签到