1. c文件操作接口
1.1 基础操作接口
/**
* @brief 打开文件
* @param[filename] 指定文件的名字,如果文件不存在,则会以该名字创建新文件
* @param[mode] 打开文本文件的参数有:r,w,a,r+,w+,a+;打开二进制文件的参数有:rb,wb,ab,rb+,r+b,wb+,w+b,ab+,a+b;
简单说明文本文件的参数含义:
r是指只读模式打开文本文件;
w是指只写的模式打开文本文件;如文件不存在会创建文件,如果文件存在会覆盖原来的内容;
a指以追加写入的模式打开文件;
r+指以读写的方式打开文件;
w+以读写的方式打开文件;如果文件不存在会创建文件,如果文件存在会将文件定位在开头处;
a+以读写模式打开文件;如果文件不存在会创建文件。读取文件会从文件开头处,写入文件会将文件定位在末尾处;
* @retval 返回指向文件的指针
*/
FILE *fopen( const char *filename, const char *mode );
/**
* @brief 关闭文件
*/
int fclose( FILE *fp );
/**
* @brief 往文件写入单个字符
*/
int fputc( int c, FILE *fp );
/**
* @brief 往文件写入一串字符
*/
int fputs( const char *s, FILE *fp );
/**
* @brief 读取一个字符
* @param[*fp] 指向文件的指针
* @retval 返回读取到的字符,如果错误则返回EOF
*/
int fgetc( FILE * fp );
/**
* @brief 读取一串字符
* @param[buf] 缓存读取到的字符
* @param[n] 需要读取的字符数是n-1,剩下一个空间会补null空字符,如果遇到\n或末尾EOF则会中断。
* @param[*fp] 指向文件的指针
* @retval 返回指向
*/
char *fgets( char *buf, int n, FILE *fp );
/**二进制读写文件函数**/
size_t fread(void *ptr, size_t size_of_elements,
size_t number_of_elements, FILE *a_file);
size_t fwrite(const void *ptr, size_t size_of_elements,
size_t number_of_elements, FILE *a_file);
1.2 将标准输入输出重定向到文件的方法如下
// 函数原型如下
FILE *__cdecl freopen(const char * __restrict__ _Filename,const char * __restrict__ _Mode,FILE * __restrict__ _File)
// fp是返回的文件对象,可用于释放文件资源时使用(释放文件资源还可以fclose(stdout))
// log.txt是文件名
// "a" 指以追加的方式打开文件
// stdout将标准输出重定向到文件
FILE *fp = freopen("log.txt", "a", stdout);