通过文件的处理,可以把内存中的数据保存到外存中,实现数据的持久化。
一、文件的保存
FILE *fp;
处理文件流程
1、打开文件
建立一个从内存到磁盘的缓冲区,把内容写到内存中。
fopen();
2、存数据
把内存中的数据映射到磁盘中,实现数据写入。
fprint()
3、关闭文件
fclose()
代码如下:
#include <stdio.h>
int main(int argc, const char * argv[])
{
FILE * fp;
//1.打开文件
fp=fopen("C:\Documents and Settings\Administrator\桌面\ok.txt", "w");
//2.写数据
fprintf(fp,"hello,wo来了");
//3.关闭文件
fclose(fp);
printf("文件写入成功\n");
return 0;
}
二、文件的读取
1.打开文件
fp=fopen("/C:\Documents and Settings\Administrator\桌面\ok.txt", "r");
2.读数据
char str[100];
fscanf(fp, "%s",str);
3.关闭文件
fclose(fp);
printf("读取文件内容:\n %s",str);
例1:在程序中录入10名学生的信息:
1、把这10名学生的成绩保存到文件
#include <stdio.h>
typedef struct _Student{
char name[10];
int age;
int number;
int score;
}Student;
int main(int argc, const char * argv[])
{ Student stus[3];
//输入学生信息
printf("请输入学生信息!\n");
for(int i=0;i<3;i++)
{ printf("请输入第%d个学生信息,格式:学号 姓名 年龄 成绩\n",i+1);
scanf("%d %s %d %d",&stus[i].number,stus[i].name,&stus[i].age,&stus[i].score);
}
//保存到文件
FILE * fp;
fp=fopen("C:\Documents and Settings\Administrator\桌面\ok.txt", "w");
for(int i=0;i<3;i++)
{
fprintf(fp,"%d %s %d %d\n",stus[i].number,stus[i].name,stus[i].age,stus[i].score);
}
fclose(fp);
return 0;
}
2、把这10名学生的成绩从文件中读取出来
#include <stdio.h>
typedef struct _Student{
char name[10];
int age;
int number;
int score;
}Student;
int main(int argc, const char * argv[])
{
Student stus[3];
//读取文件
FILE * fp;
fp=fopen("//Users//shinshen//Desktop//stu.txt", "r");
if(fp==0)
{
printf("文件打开失败!\n");
return 0;
}
int i=0;
while (!feof(fp)) {
//读取一行
fscanf(fp, "%d %s %d %d\n",&stus[i].number,stus[i].name,&stus[i].age,&stus[i].score);
i++;
}
//输出读取的内容
for(int i=0;i<3;i++)
{ printf("请输入第%d个学生信息,格式:学号%d 姓名%s 年龄%d 成绩%d\n",i+1,stus[i].number,stus[i].name,stus[i].age,stus[i].score);
}
fclose(fp);
return 0;
}