C语言文件相关函数主要有以下几种:
- FILE* fopen(char* filepath, char* mode);
打开文件函数,传入文件地址和打开模式
文件打开模式包括
"r" 读取
,"w" 写入模式,将现有文件清空。如果不存在则创建文件
,"a" 附加模式,在文件末尾追加数据,不存在则创建文件
,"r+"更新模式,可读可写
,"w+"更新模式,可读可写,文件清空,不存在则创建文件
,"a+"更新模式,可读可写,末尾追加,不存在则创建文件,可以读取全部数据,但只能在末尾追加
返回文件指针 - char getc(FILE* fp);
从fp所指文件中读取一个字符,并返回。
与char getchar()的区别就是,此函数需要指定字符获取源,而getchar()默认从stdin获取输入。
也就是说 char getchar() 等价于 char getc(stdin) 。 - putc(char ch, FILE* fp);
将字符ch放入fp所指文件。
与putchar(char ch)的区别就是,此函数需要指定字符目的文件,而putchar()默认将字符放入stdout。
也就是说 putchar(char ch) 等价于 putc(ch,stdout); - int fclose(FILE* fp);
关闭fp指定的文件,必要时刷新缓冲区。
成功返回0,失败返回EOF。当硬盘存储满的时候失败。 -
标准文件指针
stdin, 指向键盘
stdout, 指向屏幕
stderr, 指向屏幕 - fscanf(FILE* fp, const char* format, char* buf);
从fp所指文件中按照format格式将数据读取到buf中。
与scanf(const char* format, char* buf);区别就是,fscanf(FILE* fp, const char* format, char* buf)可以指
定从哪里读取数据。而scanf(const char* format, char* buf);默认从stdin读取数据。
也就是说scanf(const char* format, char* buf);等价与 fscanf(stdin, const char* format, char* buf); - fprintf(FILE* fp, char* buf);
将buf中的数据写入fp所指文件。
与printf(char* buf);区别就是,fprintf(FILE* fp, char* buf);可以指定将buf写入哪里,而printf(char* buf);
默认写入stdout。
也就是说fprintf(stdout, char* buf); 等价于 printf(char* buf); - fgets(char* buf, int stlen, FILE* fp);
从fp所指文件读取一行或者读取到文件结尾或者读取strlen-1个字符放入buf中。
当读取到EOF时返回NULL。 - fputs(char* buf, FILE* fp);
将buf写入fp所指文件。因为fgets(char* buf, int stlen, FILE* fp);在读取行的时候返回' ',因此,此函数不会
添加回车。 - fseek(FILE* fp, long offset, seek_mod);
将fp所指文件指针调整到seek_mod规定的位置,并按照offset调整指针。
seek_mod:
SEEK_SET,文件开始
SEEK_CUR,当前指针
SEEK_END 文件结束
offset:可正可负 - ftell(FILE* fp);
返回fp所指文件指针当前位置
源码示例:https://github.com/WeiAt931/C.git