C++笔记 | C fopen函数 fwrite函数 rewind fseek fscanf fprintf等文件操作函数

时间:2021-04-12 08:41:13

首先是fopen函数

和printf一样,需要cstdio头文件

原型为

FILE * fopen(const char * path,const char * mode);  

返回一个FILE类型指针

Path为调用路径,mode为调用方式,共有一下几种方式:

 -- mode: 文件打开方式,例如:  

             "r" 以只读方式打开文件,该文件必须存在。  

             "w" 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。  

            "w+" 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。  

             "a" 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。(EOF符保留)  

             "a+" 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。(原来的EOF符不保留)  

            "wb" 只写打开或新建一个二进制文件,只允许写数据。  

            "wb+" 读写打开或建立一个二进制文件,允许读和写。  

             "ab" 追加打开一个二进制文件,并在文件末尾写数据。  

             "ab+"读写打开一个二进制文件,允许读,或在文件末追加数据。     

--返回值: 文件顺利打开后,指向该流的文件指针就会被返回。

size_t fwrite(const void* buffer, size_t size, size_t count, FILE* stream);  

这个是fwrite函数,第一个参数是需要写入的指向内容的指针,第二个是写入数据的大小,第三个参数为写入数据的个数,第四个参数为写入的文件指针

 

 

Fseek函数:

需要cstdio头文件

int fseek(FILE *stream, long offset, intfromwhere);

将文件指针stream移动到文件中formwhere的位置向后偏移offset的位置,这里需要注意的是,offsetlong类型,0L这种写法表示是Long类型的0,offset这个位置使用0是不对的

参数 fromwhere为下列其中一种:
    SEEK_SET 从距文件开头offset位移量为新的读写位置. SEEK_CUR 以目前的读写位置往后增加offset个位移量.
    SEEK_END 将读写位置指向文件尾后再增加offset 个位移量. whence 值为SEEK_CUR
    SEEK_END , 参数offset允许负值的出现.

返回值:当调用成功时则返回0, 若有错误则返回-1

 

 

int fprintf(FILE*stream, const char *format, ...)

使用FILE指针stream来发送相关信息到文件中,文件指针会后移

比如fprintf(fp,"%d\n",a[i]); 

 

void rewind(FILE *fp)

作用:使文件fp的位置指针指向文件开始。

 

 

fscanf(FILE *fp, const char *format, agars)

文件读入,把fp中的内容按照format的格式进行文件读入agars

如fscanf(fp,"%d",&k);

 

fclose(fp);

关闭文件流fp