如何用C语言进行文件读写
一:打开文件、关闭文件
函数:fopen();
包含头文件:stdio.h
声明:FILE * fopen(const char *filename,const char *mode);
参数一:文件流
参数二:文件打开模式
文件打开模式参考如下:
| 模式 | 操作 | 区别 | 要求 |
| r | 读 | 从文件头开始 | 文件须存在。 |
| r+ | 读写 | 从文件头开始 | 文件须存在。 |
| w | 写 | 从文件头开始 | 若文件存在,则减其长度截为零;若不存在,则创建文件。 |
| w+ | 读写 | 从文件头开始 | 若文件存在,则将其长度截为零;如不存在,则创建文件。 |
| a | 写 | 从文件末尾开始 | 若文件存在,则从文件末尾开始添加;若不存在,则创建文件。 |
| a+ | 读写 | 从文件末尾开始 | 若文件存在,则可以读取整个文件,但只能在文件末尾添加;若不存在,则创建文件。 |
函数:fclose();
包含文件头:stdio.h
声明:int fclose(FILE *file);
参数一:文件流
代码示例:
#include<stdio.h> int main(void) { FILE *fp; fp = fopen("a.txt","r"); if(fp == NULL) { printf("error!"); return 0; } fclose(fp) return 0; }
二:文件写入
1、字符写入
函数:fputc();
包含文件头:stdio.h
声明:int fputc(char c,FILE *file)
参数一:写入字符
参数二:文件流
代码示例:
#include<stdio.h> int main(void) { FILE *fp = fopen("a.txt", "w"); if(fp == NULL) { printf("error!\n"); return 0; } char name[] = "Hello World!"; int i; for(i = 0; i < strlen(name); i++) { fputc(name[i], fp); } fputc(\'\n\', fp); fclose(fp); return 0; }
2、字符串写入
函数:fputs();
包含头文件:stdio.h
声明:int fputs(char *s,FILE *file);
参数一:写入字符串
参数二:文件流
代码示例:
#include<stdio.h> int main(void) { FILE *fp = fopen("a.txt", "w"); if(fp == NULL) { printf("error!\n"); return 0; } char name[] = "Hello Word!\n"; fputs(name, fp); fclose(fp); return 0; }
3、数据块写入
函数:fwrite();
包含头文件:stdio.h
声明:size_t fwrite(count void *ptr,size_t size,size_t nmemb,FILE *file);
参数一:写入数据地址
参数二:写入数据单字节数
参数三:写入项目个数
参数四:文件流
#include<stdio.h> int main(void) { FILE *fp = fopen("a.txt", "wb+"); if(fp == NULL) { printf("error!\n"); return 0; } char name[] = "Hello World!\n"; fwrite(name, strlen(name), 1, fp); fclose(fp); return 0; }
4、格式化写入
函数:fprintf();
包含头文件:stdio.h
声明:int fprintf(FILE *file,count char *format,...);
参数一:文件流
参数二:指定格式控制字符串
参数三:输出项
注:用法与printf();函数类似
代码示例:
#include<stdio.h> int main(void) { FILE *fp = fopen("a.txt", "wb+"); if(fp == NULL) { printf("error!\n"); return 0; } char name[] = "Hello World!\n"; fprintf(fp, "this is %s\n", name); fclose(fp); return 0; }
三:文件读取
1、字符读取
函数:fgetc();
包含头文件:stdio.h
声明:int fgetc(FILE *file);
参数一:文件流
代码示例:
#include<stdio.h> int main(void) { FILE *fp = fopen("a.txt", "r"); if(fp == NULL) { printf("error!\n"); return 0; } char c; while((c = fgetc(fp)) != EOF) { printf("%c", c); } fclose(fp); return 0; }
2、字符串读取
函数:fgets();
包含头文件:stdio.h
声明:char *fgets(char *buf,int bufsize,FILE *file);
参数一:储存读取数据
参数二:储存数据大小
参数三:文件流
代码示例:
#include <stdio.h> int main() { FILE *fp = fopen("a.txt", "r"); if(fp == NULL) { printf("error!\n"); return 0; } char buf[1024] = {0}; while(fgets(buf, 1024, fp) != NULL) { printf("%s", buf); } fclose(fp); return 0; }
3、数据块读取
函数:fread();
包含头文件:stdio.h
声明:size_t fread(count void *str,size_t size,size_t count,FILE *file);
参数一:储存读取数据
参数二:要读取数据的字节数
参数三:要读取数据项
参数四:文件流
代码示例:
#include <stdio.h> int main() { FILE *fp = fopen("a.txt", "r"); if(fp == NULL) { printf("error!\n"); return 0; } char buf[102400] = {0}; fread(buf, 1024, 100, fp); printf("%s", buf); fclose(fp); return 0; }
4、格式化读取
函数:fscanf();
包含头文件:sdtio.h
声明:int fscanf(FILE *file,count char *format,...);
参数一:文件流
参数二:读取格式
参数三:读取输入项
代码示例:
#include <stdio.h> int main() { FILE *fp = fopen("a.txt", "r"); if(fp == NULL) { printf("error!\n"); return 0; } char buf[1024] = {0}; fscanf(fp, "%s", buf); printf("%s\n", buf); fclose(fp); return 0; }