文件IO
记录常用的一些 IO 接口
标准IO
FILE* fopen(const char* path,const char* mode);
/***********************************************************
@path 操作的文件
@mode 操作的权限 ("r","r+","w","w+","a","a+")
返回值 成功 文件指针 失败 NULL
***********************************************************/
//获取一个字符
int fgetc(FILE* STREAM);
int getc(FILE* STREAM);
//从标准输入获取一个字符
int getchar();
//行读取
char* fgets(char* s int size,FILE* stream);
char* gets(char* s);
/***********************************************************
@s 自定义的缓冲区指针
@size 自定义的缓冲区大小
@stream 操作文件指针
返回值 成功 自定义缓冲区指针 返回 NULL
***********************************************************/
//块读取
size_t fread(void* ptr,size_t size,size_t nmemb,FILE* stream);
/***********************************************************
@ptr 自定义的缓冲区大小
@size 数据块大小
@nmemb 数据块的个数
@stream 操作的文件指针
返回值 成功 nmmemb(读取的数据块个数)
失败 nmmemb(读取的数据块个数)
***********************************************************/
//写入一个字符
int fputc(int c,FILE* stream);
int putc(int c,FILE* stream);
//向标准输出 输出一个字符
int putchar(int c);
//行写入
int fputs(const char *s,FILE* stream);
int puts(const char *s);
/***********************************************************
@s 自定义缓冲区指针
@stream 操作的文件指针
返回值 成功 非负整数 失败 EOF
***********************************************************/
//块写入
size_t fwrite(const void* ptr,size_t size,size_t nmemb,FILE* stream);
/***********************************************************
@ptr 自定义的缓冲区大小
@size 数据块大小
@nmemb 数据块个数
@stream 操作的文件指针
***********************************************************/
//偏移文件指针
int fseek(FILE* stream,long offset,int whence);
/***********************************************************
@stream 操作的文件指针
@offset 偏移量
@whence SEEK_SET
SEEK_CUR
SEEK_END
返回值 成功 0 失败 -1
***********************************************************/
//获取操作文件的当前偏移量
long ftell(FILE* stream);
int fprintf(); //向指定文件中输出格式化字符串
int sprintf(); //向指定缓冲区输出格式化字符串
系统IO
int open(const char *pathname, int falgs);
int open(const char *pathname, int falgs, modes_t mode);
/***********************************************************
@pathname 操作的文件
@falgs O_RDONLY 只读
O_WRONLY 只写
O_RDWR 可读可写
O_APPEND 末尾追加
O_CLOEXEC 用exec函数时,该文件描述符应该被关闭
0_CREAT 文件不存在会自动创建
可以用 位或 操作写入多个参数
@mode 文件权限(777) 只能是 falgs 是 O_CREAT/O_TMPFILE
返回值 成功:文件描述符(非负整数,本质就是数组下标)
失败:-1
***********************************************************/
ssize_t write(int fd,const void *buf, size_t count);
/***********************************************************
@fd 文件描述符
@buf 缓冲区
@count 预期写入的字节数
返回值 成功 成功写入的字节数
失败 -1
***********************************************************/
ssize_t read(int fd, void *buf, size_t count);
/***********************************************************
@fd 文件描述符
@buf 缓冲区
@count 预期读取的字节数
返回值 成功 成功读取的字节数
失败 -1
***********************************************************/
off_t lseek(int fd,off_t offset, int whence);
/***********************************************************
@fd 文件描述符
@offset 偏移量
@whence SEEK_SET
SEEK_CUR
SEEK_END
光标的起始位置
返回值 成功 返回相较文件开头的偏移量
失败 -1
***********************************************************/
void *mmp(void *addr,size_t length, int prot, int flags,int fd,off_t offset);
/***********************************************************
@addr 一般填NULL,由内核自动寻找适合的内存空间
@length lcd屏的大小,以字节为单位
@prot PROT_EXEC
PROT_READ
PROT_WRITE
PROT_NONE
可以通过 位或 操作写入多个权限
@flags MPA_SHARED //共享
MPA_SHARED_VALIDATE
MAP_PRIVATE //私有
@fd 文件描述符
@offset 偏移量 //申请空间的偏移量
返回值 成功:addr的起始地址 失败 MAP_FAILED((void*)-1)
***********************************************************/
int munmmp(void *addr,size_t length);
/***********************************************************
@addr mmp返回的addr的地址
@length lcd屏的大小,以字节为单位
返回值 成功 0 失败 -1
***********************************************************/
标签:文件,IO,stream,int,char,FILE,size
From: https://www.cnblogs.com/waibibabu-/p/18187065