库:一组实现好的函数接口
一.printf函数族
int printf(const char *format, ...);
int fprintf(FILE *stream, const char *format, ...);
int sprintf(char *str, const char *format, ...);
二.fopen 打开文件
FILE *fopen(const char *path, const char *mode);
功能:打开一个指定的文件
参数:
@path
@mode
r
r+ :
w
w+ :
a
a+ :
返回值:成功返回流指针,失败返回NULL(0)
三.单个字符的读写
//读
int fgetc(FILE *stream);
功能:从stream读取字符
返回值:成功返回字符,失败 或者 读到文件尾部返回EOF(-1)
//写
int fputc(int c, FILE *stream);
功能:将指定的字符,写入流
参数:
@c
@stream 文件
返回值:成功返回写入的字符,失败返回EOF(-1)
四.
//读
char *fgets(char *s, int size, FILE *stream);
功能:从指定的流,读取多个字符存放在s指向的地址
参数:
@s
@size
@stream
返回值:成功返回s,失败或者读到文件尾部返回NULL(0)
注意:
1.每次fgets最多只能读取size - 1个字符
2.每次读取结束的时候都会自动加'\0'
3.如果读取的过程中,遇到'\n',则读取结束,'\n'字符会被读走
char *gets(char*s)
//写
int fputs(const char *s, FILE *stream);
功能
参数
@s
@stream
返回值
注意:如果遇到'\0'字符则写结束,并且不写入
int puts(const char *s)
五.对像读写
对像:可以是基本类型,也可以结构体类型
size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
size_t fread(读取数据存放的地址,对像的大小,要求读取的对像个数,流);
注意:
1.nmemb 是要求读取对像的个数
2.size
3.返回值:返回实际读取的对像的个数
4.fread每次的读取的大小:实际读取的对像个数 * 对像的大小
size_t是一个整型
//写
size_t fwrite(const void *ptr, size_t size, size_t nmemb,FILE *stream);
size_t fwrite(写入数据存放的地址,对像的大小,要求写入的对像个数,流);
六、文件定位
int fseek(FILE *stream, long offset, int whence);
功能:更改内核中的offset值
参数:
@stream 打开的文件
@offset 偏移值, offset > 0 向后偏移,offset < 0 向前偏移
@whence
返回值:成功返回0,失败返回-1
long ftell(FILE *stream);
功能:获得内核中offset值
返回值:返回文件从头开始的偏移值
void rewind(FILE *stream);
功能:定位到文件头部
等价于fseek(fp,0L,SEEK_SET);
获得文件的大小
fseek(fp,0,SEEK_END);
file_size = ftell(fp);
七.目录操作
1.打开目录
DIR *opendir(const char *name);
功能:打开目录文件
返回值:成功返回目录流指针,失败返回NULL
2.读目录
struct dirent *readdir(DIR *dirp);
功能:读目录
参数:
@dirp 目录流指针
返回值:成功,返回struct dirent *,读到目录尾部返回NULL
八.关闭文件
fclose(FILE*fp)