C/C++以及Linux文件操作备忘录
C文件操作
#include<stdio.h>
stdin, stdout, stderr
文件开关
/*
** r/rb 只读。 不存在返回NULL,打开成功不会清空文件
** w/wb 只写。 不存在创建, 打开成功后清空文件
** a/ab 只写。 不存在创建, 打开成功不会清空文件
** r+/rb+ 读写兼备。 不存在返回NULL,打开成功不会清空文件
** w+/wb+ 读写兼备。 不存在创建, 打开成功后清空文件
** a+/ab+ 允许读取。 不存在创建, 打开成功不会清空文件。
*/
FILE* fopen(char* fname, char* mode);
int fclose(FILE* fp);
文件读写
- 单字符
// @brief 返回读取的单个字符ASCII码
int fgetc(FILE* fp);
// @brief 向文件中写入一个字符。
// @return int 失败 -1, 成功写入的ASCII码值
int fputc(char ch, FILE* fp);
- 单行
// @brief 最多count-1个字符,第count个字符是'\0'.读取过程遇到'\n'会提前结束
// @ return buf所指向的空间地址
char* fgets(char* buff, int count, FILE* fp);
// @brief 将ch参数'\0'之前的部分写入文件
// @return 错误EOF,成功0
int fputs(const char* ch, FILE* fp);
// @brief 二进制形式读取
// @param buff 空间存储地址
// @param size 每个数据项的字节数
// @param count 读取的数据项个数
// @param fp 文件指针
// @return 读取的数据字节数
size_t fread(void* buff, size_t size, size_t count, FILE* fp);
// @brief 二进制形式写入
size_t fwrite(const void* buff, size_t size, size_t count, FILE* fp);
- 文件随机读写
// @brief 获取文件指针当前位置
// @return 文件位置指针距离文件开头的字节数。不存在或有错误返回-1L
long ftell(FILE* fp);
// @brief 以origin为基准偏移offset
// @param origin SEEK_SET 0 文件从开头偏移
// SEEK_CUR 1
// SEEK_END 2
// @return 成功0 错误-1
int fseek(FILE* fp, long offset, int origin);
// @brief 指针移动到文件开头
void rewind(FILE* fp);
C++文件操作
c++三种IO:iostream,fstream,sstream
#include <fstream>
fstream ofstream ifstream
Linux文件操作
打开
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
int open(const char* pathname, int flags);
int open(const char* pathname, int flags, mode_t mode);
flags: O_RDONLY O_WRONLY O_RDWR
mode:创建文件时使用