C的简单文件读写示范
在C中,通过fopen()函数来打开文件,在程序结束前必须用fclose()函数关闭文件
打开/关闭文件
- fopen()函数原型: FILE* fopen(const char* filename, const char *mode)
参数一: 文件名
参数二: 打开模式
返回值: 成功打开返回文件指针,打开失败返回NULL
- fclose()函数原型: int fclose(FILE *fp)
参数一: 文件指针
返回值: int类型的数值,返回1代表成功关闭
使用示例: char* fileName = "文件名"; char* mode = "r"; FILE* f = fopen(fileName, mode); .... fclose(f);
- fopen()函数原型: FILE* fopen(const char* filename, const char *mode)
常用文件读写:
- 读: fsanf()
函数原型:
int fscanf(FILE *stream, const char *format[, address, …]);
参数一: 文件指针
其他参数: 其他参数: 格式与scanf(“%d”, &a);一样,需要用到占位符
返回值: 成功读取的字符的个数
如果遇到错误或遇到end of file,返回值为EOF。
- 写: fprintf()
函数原型:
int fprintf(FILE* stream, const char* format[, argument, …]);
参数一: 文件指针
其他参数: 格式与printf(“%s参数%d”, “可选”, 1);一样,需要用到占位符
返回值: 已输出的字符的个数
PS: [, argument, …] 中,被[]括起来的参数都是可选参数(需要时可以有,不需要时可以没有)
如: printf(“Hello World”); 就没用到可选参数
printf(“%s %s”, “Hello”, “World”);就用到了两个可选参数
- 读取完毕feof()
函数原型: int feof(FILE *stream)
参数一: 文件指针
返回值: 1读取完毕,0未读取完毕
- 读: fsanf()
注意:
- 确定文件读写的模式mode
- 打开文件后,都得用fclose()关闭该文件
- 若文件为空(没内容),则不能使用fclose()
- 用循环从文件中读取相同格式的数据时,判断条件为feof()
- 读取文件前,得检测文件是否存在
存在就用读取其数据
不存在就用用”w”,创建该文件
- 由于编码问题,以’wb’【二进制】模式打开的文件,在写入含有’\n’的文本后,在windows自带的记事本看不到换行
- 确定文件读写的模式mode
简单示例
#include <stdio.h>
main()
{
FILE* data_stu=fopen("学生信息管理系统_data.txt", "r");
if(data_stu==NULL) // 文件不存在, 新建该对应的数据文件, 并写入必要的数据
{
FILE* data_stu_2 = fopen("学生信息管理系统_data.txt","w");
fprintf(data_stu_2,"姓名,学号,数学,语文,英语,平均分\n"); // 写入信息说明
fprintf(data_stu_2,"小明,A10,100,20,30,50\n"); // 写入一个学生的数据
fclose(data_stu_2);
}else // 仅在文件存在且内容不为空
{
char rubbish[50];
// 读取数据时, 每次都得看检测能否读取
if( !feof(data_stu) )
fscanf(data_stu,"%s\n",rubbish); //读取信息说明
// 循环读取学生数据
while( !feof(data_stu) )
{
//步骤省略
break
}
// 仅在文件存在且不为空时, 关闭文件
fclose(data_stu);
}
}
// data_stu是在文件存在且内容不为空时,才关闭
// data_stu_2是在文件不存在, 用于新建数据文件的, 写入必要的数据后便在{}中关闭了该文件