C文件操作进阶

  文件操作基本步骤:首先使用fopen获得指向文件的指针,

1.fopen

  作用:打开一个文件,返回指向该文件的指针  

  函数原型:FILE * fopen(const char *path,cost char *mode)  

  参数说明:第一个参数为欲打开文件的文件路径及文件名,第二个参数表示对文件的打开方式

  返回值:文件打开了,返回一个指向该打开文件的指针(FILE结构);文件打开失败,错误上存error code(错误代码)

注:mode有以下值:

r:只读方式打开,文件必须存在

r+:可读写,必须存在

rb+:打开二进制文件,可以读写

rt+:打开文本文件,可读写

w:只写,文件存在则文件长度清0,文件不存在则建立该文件

w+:可读写,文件存在则首先将文件清空再写入,文件不存在则建立该文件

a:附加方式打开只写,不存在建立该文件,存在写入的数据加到文件尾,EOF符保留

a+:附加方式打开可读写,不存在建立该文件,存在写入的数据加到文件尾,EOF符不保留

wb:打开二进制文件,只写

wb+:打开或建立二进制文件,可读写

wt+:打开或建立文本文件,可读写

at+:打开文本文件,可读写,写的数据加在文本末尾

ab+:打开二进制文件,可读写,写的数据加在文件末尾

由mode字符可知,上述如r、w、a在其后都可以加一个b,表示以二进制形式打开文件

注意:在fopen操作后要进行判断,是否文件打开,文件真正打开了才能进行后面的读或写操作,如有错误要进行错误处理

例:FILE *fp=fopen("testfile","w+")

2.fwrite

  作用:向文件写入一个数据块

  函数原型:size_t fwrite(const void* buffer, size_t size, size_t count, FILE* stream);

  参数说明:第一个参数为指向文件输出地址的指针,参数二表示写入的每个数据路块的字节数,参数三表示要写入size字节数据块的个数,参数四为指向目标文件的指针。  

  返回值:实际写入的数据块的个数。

说明:写入到文件的哪里? 这个与文件的打开模式有关,如果是w+,则是从file pointer指向的地址开始写,替换掉之后的内容,文件的长度可以不变,stream的位置移动count个数;如果是a+,则从文件的末尾开始添加,文件长度加大。
fseek对此函数有作用,但是fwrite[1]函数写到用户空间缓冲区,并未同步到文件中,所以修改后要将内存与文件同步可以用fflush(FILE *fp)函数同步。
 

 3.fseek 

  作用:重定位文件内部指针

  函数原型:int fseek(FILE *stream,long offset,int framewhere)

  参数说明:第一个为文件指针,第二个是指针的偏移量,第三个是指针偏移起始位置

  返回值:成功则返回0,否则返回其他值

  偏移量的三种取值: SEEK_SET  文件头

            SEEK_CUR  当前指针位置

            SEEK_END  文件尾

4.fread

  作用:读取文件数据块(注意:文件读取后文件内指针会随之移动

memset

  函数原型:void *memset(void *s,int c,size_t n)
  作用:将已开辟内存空间 s 的首 n 个字节的值设为值 c。

sizeof

  作用:返回类型所占的字节数

原文地址:https://www.cnblogs.com/2017Crown/p/7181407.html