标准I/O库

1.打开文件fopen()

#include <stdio.h>

/* 
   path:参数path指向文件路径,可以是绝对路径、也可以是相对路径。
   mode:参数mode指定了对该文件的读写权限,是一个字符串
*/
FILE *fopen(const char *path, const char *mode);



2.关闭文件fclose()

#include <stdio.h>

/*
    参数stream为FILE类型指针,调用成功返回0;失败将返回EOF(也就是-1),并且会设置errno来指示错误原因
*/
int fclose(FILE *stream);



3.读文件和写文件

#include <stdio.h>

/*
    ptr:fread()将读取到的数据存放在参数ptr指向的缓冲区中;
    size:fread()从文件读取nmemb个数据项,每一个数据项的大小为size个字节;
    nmemb:参数nmemb指定了读取数据项的个数;
    stream:FILE指针;
    返回值:调用成功时返回读取到的数据项的数目(数据项数目并不等于实际读取的字节数,除非参数size等于1);
*/
size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);

/*
    ptr:将参数ptr指向的缓冲区中的数据写入到文件中;
    size:参数size指定了每个数据项的字节大小;
    nmemb:参数nmemb指定了写入的数据项个数;
    stream:FILE指针;
    返回值:调用成功时返回写入的数据项的数目(数据项数目并不等于实际写入的字节数,除非参数size等于1);
*/
size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);

譬如要将一个struct mystr结构体数据写入到文件中,可按如下方式写入:

fwrite(buf, sizeof(struct mystr), 1, file);



4.fseek定位

#include <stdio.h> 

/*
    stream:FILE指针;
    offset:偏移量,以字节为单位;
    whence:用于定义参数offset偏移量对应的参考值, SEEK_SET   SEEK_CUR   SEEK_END
*/
int fseek(FILE *stream, long offset, int whence);


/*
    参数stream指向对应的文件,函数调用成功将返回当前读写位置偏移量;调用失败将返回-1,并会设置errno以指示错误原因
*/
long ftell(FILE *stream);



5.检查或复位状态

#include <stdio.h>

/*
    用于测试参数stream所指文件的end-of-file标志,当文件的读写位置移动到了文件末尾时,end-of-file标志将会被设置
*/
int feof(FILE *stream);


/*
    用于测试参数stream所指文件的错误标志,当对文件的I/O操作发生错误时,错误标志将会被设置
*/
int ferror(FILE *stream);


/*
    用于清除end-of-file标志和错误标志
*/
void clearerr(FILE *stream);



6.格式化输出

#include <stdio.h>

int printf(const char *format, ...);

int fprintf(FILE *stream, const char *format, ...);
int dprintf(int fd, const char *format, ...);

int sprintf(char *buf, const char *format, ...);
int snprintf(char *buf, size_t size, const char *format, ...);



7.格式化输入

#include <stdio.h>

int scanf(const char *format, ...);
int fscanf(FILE *stream, const char *format, ...);
int sscanf(const char *str, const char *format, ...);



8.刷新文件I/O的内核缓冲区

#include <unistd.h>

/*
    fsync()将参数fd所指文件的内容数据和元数据写入磁盘,只有在对磁盘设备的写入操作完成之后,才会返回;
    参数fd表示文件描述符,函数调用成功将返回0,失败返回-1并设置errno以指示错误原因
*/
int fsync(int fd);

/*
    fdatasync()仅将参数fd所指文件的内容数据写入磁盘,并不包括文件的元数据;
*/
int fdatasync(int fd);

/*
    sync()会将所有文件I/O内核缓冲区中的文件内容数据和元数据全部更新到磁盘设备中
*/
void sync(void);

I/O缓冲

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值