c 语言文件处理相关函数
c语言中的文件处理相关函数,其实也用的比较多,这一次在写一个文件处理的类时,优先就想到使用文件指针来操作,但是悲催的是好久没撸过文件操作集的相关函数了。都忘记了,还是广大网友给力,让我从度娘中拾回自信;纸上得来终觉浅,妈蛋知识忘记的太快,还是做点笔记加深下印象。
c语言中用文件指针 FILE * 来操作文件,现在整理下 FILE * 及其相关的方法。
1. FILE* fopen(const char * fname,const char* mode);
fname为需要操作的文件名, mode为打开方式,有如下打开方式。若打开文件成功,返回一个文件指针,否则返回NULL;
文件使用方式 意 义
“rt” 只读打开一个文本文件,只允许读数据
“wt” 只写打开或建立一个文本文件,只允许写数据
“at” 追加打开一个文本文件,并在文件末尾写数据
“rb” 只读打开一个二进制文件,只允许读数据
“wb” 只写打开或建立一个二进制文件,只允许写数据
“ab” 追加打开一个二进制文件,并在文件末尾写数据
“rt+” 读写打开一个文本文件,允许读和写
“wt+” 读写打开或建立一个文本文件,允许读写
“at+” 读写打开一个文本文件,允许读,或在文件末追加数 据
“rb+” 读写打开一个二进制文件,允许读和写
“wb+” 读写打开或建立一个二进制文件,允许读和写
“ab+” 读写打开一个二进制文件,允许读,或在文件末追加数据
2. int fclose(FILE * fp); 关掉所打开的文件,fp为文件指针,成功返回0, 失败返回EOF,比较简单。
3. int int fputc(int c, FILE *stream); 向流写入一个字符,成功返回这个字符,失败返回EOF。
4. int fgetc(FILE *stream); 从流中读一个字符,成功返回这个字符,失败返回EOF。
5. int fprintf(FILE *stream, const char *format[, argument, ...]); 按格式输入到流,用法与printf()相同,不过输出不是到控制台。
6. int fscanf(FILE *stream, const char *format[, address, ...]); 按流中格式读取,用法与scanf()相同,不过从流中读取。
7. int feof(FILE *stream); 在文件到达文件尾时给出一个非零值。
8. int ferror(FILE *stream); ferror()函数检查stream(流)中的错误, 如果没发生错误返回0,否则返回非零. 如果发生错误, 使用perror()检测发生什么错误。
9. int fread( void *buffer, size_t size, size_t num, FILE *stream ); 函数fread()读取[num]个对象(每个对象大小为size(大小)指定的字节数),并把它们替换到由buffer(缓冲区)指定的数组. 数据来自给出的输入流. 函数的返回值是读取的内容数量. 使用feof()或ferror()判断到底发生哪个错误.
10. int fseek( FILE *stream, long offset, int origin ); 函数fseek()为给出的流设置位置数据. origin的值应该是下列值其中之一(在stdio.h中定义):
名称 | 说明 |
SEEK_SET | 从文件的开始处开始搜索 |
SEEK_CUR | 从当前位置开始搜索 |
SEEK_END | 从文件的结束处开始搜索 |
fseek()成功时返回0,失败时返回非零. 你可以使用fseek()移动超过一个文件,但是不能在开始处之前. 使用fseek()清除关联到流的EOF标记.
11. int fsetpos( FILE *stream, const fpos_t *position ); fsetpos()函数把给出的流的位置指针移到由position对象指定的位置. fpos_t是在stdio.h中定义的. fsetpos()执行成功返回0,失败时返回非零.
12. long ftell( FILE *stream ); ftell()函数返回stream(流)当前的文件位置,如果发生错误返回-1.
13. int fwrite( const void *buffer, size_t size, size_t count, FILE *stream ); fwrite()函数从数组buffer(缓冲区)中, 写count个大小为size(大小)的对象到stream(流)指定的流. 返回值是已写的对象的数量.
14. int remove( const char *fname ); remove()函数删除由fname(文件名)指定的文件. remove()成功时返回0,如果发生错误返回非零.
15. int rename( const char *oldfname, const char *newfname ); 函数rename()更改文件oldfname的名称为newfname. rename()成功时返回0,错误时返回非零.
16. void rewind( FILE *stream ); 函数rewind()把文件指针移到由stream(流)指定的开始处, 同时清除和流相关的错误和EOF标记.