
Linux应用层软件的开发始终涉及文件的操作(例如: 日志,配置). 在这段时间内,有很多相关的库函数
它可以用手写方式书写,但是考虑到人们的记忆力是有限的,再加上当今流入大脑的大量信息,人们会暂时忘记它们.
尽管手头的开发工作涉及该领域的许多知识,但我还是决定花些时间为自己编写. 如果以后有任何疑问,可以直接检查记录fopen wb 权限,而不必每次都检查.
找到杜娘,别胡说八道,说到重点.
介绍用于文件操作的常用库函数:
1)fopen函数
头文件: #include
原型: FILE * fopen(const char *路径,const char *模式);
参数:
path: 可能的值: 常量字符串(例如: “ / home / dir / test.txt”),指向字符串的指针(例如: char * p_file =“ /home/dir/test.txt”;),
当然数组也是可以接受的(例如: char文件[100] = {“ /home/dir/test.txt”};)
模式: 可选参数为“ r”“ w”“ a”“ r +”“ w +”“ a +”“其他选项+ b”
“ r”: 打开文本文件以供阅读. 流位于文件的开头.
该文件必须存在,否则将失败;就像获取日志内容一样,您可以以只读模式打开文件并开始从文件中读取数据;
“ w”: 将文件截断为零长度或创建要写入的文本文件. 流位于文件的开头.

如果文件存在,将创建它. 如果文件不存在,将创建它. 请注意,如果您不断向日志添加新内容,则无法更改打开日志的模式.
“ a”: 打开以进行追加(在文件末尾写入). 如果文件不存在,则会创建该文件.
流位于文件末尾.
如果文件不存在,将创建它. 如果文件存在,它将被打开并且不会被清除. 它将指向文件的末尾. 通常用于将内容写入日志.
“ b”: 存储文件时,以二进制模式打开文件. 如果未添加“ b”,则以文本模式(ASCII代码)打开文件. 这是主要的
根据实际情况,文件通常分为文本文件和二进制文件. 当文本文件存储在磁盘上时,每个字符对应一个字节和二进制.
文件根据二进制编码规则存储. 一个简单的示例: 一个文本文件的5678存储为00110101 00110110 00110111 00111000
二进制存储为: 0001011000101110. 通常,我们在实际应用中编辑文本文件. 二进制文件还包括例如打开图片.
根据手册的概述:
a)如果需要对已经存在且具有内容的文件进行操作,建议在“ r”模式下仅读取文件内容,否则“ r +”可以具有写权限;
b)如果需要创建新文件,通常“ w”模式或“ w +”具有读取权限并可以读取书面内容;
c)如果继续基于现有文件将内容添加到文件末尾fopen wb 权限,则可以在“ a”模式或“ a +”模式下具有读取权限;
d)如果使用二进制文件,则需要在模式下添加“ b”.
返回值: 成功打开文件并返回FILE指针(文件流),未返回NULL;通常确定返回值,然后执行后续任务;
2)fclose函数

头文件: #include
原型: int fclose(FILE * fp);
参数:
fp: 成功打开文件后返回的FILE指针
功能是关闭文件流并释放指针;
返回值: 如果成功,则返回0;如果失败,则返回EOF(-1);否则,返回0. 通常很少做出判断;
3)fread函数
头文件: #include
原型: size_t fread(无效* ptr,size_t大小,size_t nmemb,FILE *流);
参数:
ptr: 用于存储文件内容的内存空间的指针或地址. 它可以是数组名,也可以是指向malloc分配的内存的指针;
size: 与nmemb结合使用的读取块数;大小1表示将大小为nmemb的文件的内容读入指向内存的ptr;
nmemb: 一次要读取的文件内容的大小,通常是ptr指向的内存大小,当然,前提是大小为1;
stream: 打开文件的fopen的返回值;
返回值: 成功返回读取内容的大小. 大小为1时,通常小于或等于nmemb值. 失败或文件末尾返回0.

4)fwrite函数
头文件: #include
原型: size_t fread(无效* ptr,size_t大小,size_t nmemb,FILE *流);
参数:
ptr: 要写入的内容的地址;
size: 写入的块数,与nmemb结合使用;大小为1,表示将大小为nmemb的内容写入文件;
nmemb: 一次写入文件的内容大小,通常是ptr指向的内存大小,当然,前提是大小为1;
stream: 打开文件的fopen的返回值;
返回值: 成功返回内容的大小,或在文件末尾返回0.
5)fgets函数
头文件: #include
原型: char * fgets(char * s,整数大小,FILE *流);
参数:
s: 用于存储文件内容的地址;
size: 从文件获取的内容的大小,可以根据实际情况定义. 如果按行读取,则通常定义为1024个字节;

stream: 打开文件的fopen的返回值;
功能: 此功能非常有用,尤其是在用于读取配置文件时. 通常用于逐行读取文件内容,然后对其进行分析.
每行的内容将涉及字符串匹配或提取字段等. 那么阅读时需要注意什么?
情况1: 当读取的内容小于大小值时,所有字符都将被读入s中,包括“ \ r \ n”,并且将自动在末尾添加“ \ 0”
完整的字符串. 此时,您需要添加代码以滤除'\ r \ n'并将其修改为'\ 0';
情况2: 当读取的内容大于大小时,它将被自动截断,最后一位为'\ 0',形成一个完整的字符串;
此功能的主要用途是注意这两点. 您也可以从键盘上读取输入的标准输入.
返回值: 成功返回s,失败返回NULL.
6)ftell函数
头文件: #include
原型: long ftell(FILE *流);
此函数主要用于从文件开头获取当前文件游标(指针)的大小(以字节为单位);不太多,但是
使用fseek或以“ a”模式打开文件,即可获取文件大小;
返回值: 成功返回大小,失败返回0.
7)fseek函数
头文件: #include
原型: int fseek(文件*流,长偏移量,int来源);
参数:
offset: offset,nL,n> 0表示wherece的指定位置的前向偏移,换句话说,从wherece到文件末尾,n <0为
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-157590-1.html
烊烊我们电影院约啦