Linux文件编程
open函数
打开一个文件并返回文件描述符,后续读取、写入等操作都需要该返回值
-
头文件和原函数
#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); -
内容解析
const char *pathname——打开文件地址(或用"./file")
int flags——打开方式O_RDONLY 只读模式 O_WRONLY 只写模式 O_RDWR 读写模式 O_CREAT 没有则创建(搭配“|”和0600使用)
mode_t mode——操控者身份(0600为管理员)
close函数
关闭打开的函数,搭配open使用,open必须close!!!
-
头文件和原函数
#include <unistd.h>
int close(int fd);
-
内容解析
int fd——文件描述符(open的返回值)
write函数
将指定内容写进文件中,函数返回值为录入字符串大小。
-
头文件和原函数
#include <unistd.h>
ssize_t write(int fd, const void *buf, size_t count); -
内容解析
int fd——所要写入的文件描述符
const void *buf——将要写入的内容地址
size_t count——想要写入文件的大小
read函数
读取文件的内容并记录,函数返回值为实际读取到的字符串大小。
-
头文件和原函数
#include <unistd.h>
ssize_t read(int fd, void *buf, size_t count);
-
内容解析
int fd——所要读取的文件描述符
void *buf——获取读到的内容存放地
size_t count——想要读取的文件大小
lseek函数
移动文件内的光标位置。
-
头文件和原函数
#include <sys/types.h>
#include <unistd.h>off_t lseek(int fd, off_t offset, int whence);
-
内容解析
int fd——想要移动光标的文件描述符
off_t offset——从光标位置开始的偏移量
int whence——移动光标到特殊位置SEEK_SET 将光标移至文件头位置 SEEK_END 将光标移至文件尾位置 SEEK_END 将光标移至当前所在位置
cp函数思路
cp 文件1 文件2
- main函数里赋予调用内容
int main(int argc,char **argv)
argc 检测文件数量是否够
argv 用来读取文件 - 打开argv[1]读取文件内容
- 打开argv[2]写入读取内容
- 关闭两文件
读取存档,修改存档
-
使用open打开要修改的文件
-
读取文件并把内容放到readBuf中
-
利用strstr()找到修改内容
-
将指针偏移修饰内容
-
替换指针所在值
-
光标移至文件头
-
将readBuf中内容写到读取文件中
-
关闭读取文件
标准C库对文件操作
可移植性高相对于Linux
fopen函数
C库中的打开文件,返回值为FILE类型的指针。
-
原函数
FILE *fopen(const char *pathname, const char *mode);
-
内容解析
const char *pathname——打开文件地址(或"./a.out")
const char *mode——打开方式"r" —— 只读 只能读取,不能修改 "r+"—— 读写文件,文件必须存在 "w"—— 写入并创建文件,若存在该文件则清空重建一个文件 "w+"—— 写入、创建并更新文件
fclose函数
C库中的关闭所打开的文件。
-
原函数
int fclose(FILE *stream);
-
内容解析
FILE *stream——所要关闭文件的文件描述符
fwrite函数
C库中的写入函数,返回值为实际写入的个数
-
原函数
size_t fwrite(const void *ptr, size_t size, size_t nmemb,FILE *stream);
-
内容解析
const void *ptr——所要写入的字符串地址
size_t size——每次写入的大小
size_t nmemb——写入的次数
FILE *stream——写入文件的文件修饰符写入大小 * 写入次数 = 字符串长度
fread函数
C库中的读取函数,返回值为实际读取的个数
-
原函数
size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
-
内容解析
void *ptr——读取内容存放位置
size_t size——每次写入的大小
size_t nmemb——写入的次数
FILE *stream——读取文件的文件修饰符
fseek函数
C库中的改变光标位置函数
-
原函数
int fseek(FILE *stream, long offset, int whence);
-
内容解析
FILE *stream——需改变光标位置的文件
long offset——从光标开始偏移量
int whence——改变光标位置SEEK_SET 将光标移至文件头 SEEK_CUR 将光标移至当前位置(光标不动) SEEK_END 将文件移至文件尾
fputc函数
C库中打印字符串
-
原函数
int fputc(int c, FILE *stream);
-
内容解析
int c——需要打印的内容(可使用字符串,打印时需要偏移)
FILE *stream——打印到的目标文件的文件描述符
fgetc函数
C库中获取文件中内容
-
原函数
int fgetc(FILE *stream);
-
内容解析
FILE *stream——所要获取文件的文件描述符
feof函数
C库中检索文件的结束符号,若文件结束则返回非0值,若文件未结束则返回0值
-
原函数
int feof(FILE *stream);
-
内容解析
FILE *stream——所要获取文件的文件描述符