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个字符是''.读取过程遇到'
'会提前结束
// @ return buf所指向的空间地址
char* fgets(char* buff, int count, FILE* fp);

// @brief 将ch参数''之前的部分写入文件
// @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:创建文件时使用

原文地址:https://www.cnblogs.com/pusidun/p/12298103.html