天天看點

檔案儲存和讀取       return 0;

   通過檔案的處理,可以把記憶體中的資料儲存到外存中,實作資料的持久化。

一、檔案的儲存

    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;

    }

繼續閱讀