通過檔案的處理,可以把記憶體中的資料儲存到外存中,實作資料的持久化。
一、檔案的儲存
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;
}