c語言中文件讀寫:fscanf & fprintf

  學過C語言的,對printf和scanf函數肯定不會陌生(如果不知道,那說明你就沒學過C語言),這兩個函數分別是格式化輸出和格式化輸入函數,按照指定的格式輸入數據或者在屏幕上輸出數據。

  fprintf函數和fscanf函數和printf和scanf相比,就是多了個f前綴,這個f當然就是指的file,也就是文件了,後兩者是操作的對象是終端設備,前者則是針對磁盤文件的操作,因此fprintf函數和fscanf函數就是了C語言中文件的格式化輸入輸出函數。

  學C語言,老師就要佈置作業的吧,作業做什麼呢?一般都是做學生成績管理系統吧,那就要設計個數據結構保存學生的信息吧,姓名、學號、成績等等的,用什麼好呢,那當然是結構體struct了。

C語言知蟻博客
struct student
{
    char    chName[20];    //姓名
    int    nID;        //學號
    float    fScores[3];    //3門課的成績
};

  上面就是一個比較簡單的用於保存學生成績信息的結構體類型了,其中包括學生的姓名、學號以及三門課的成績,下面知蟻就介紹如何使用fprintf函數和fscanf函數來讀寫這種類型的數據。

fprintf函數和fscanf函數調用方式

fprintf(文件結構指針,格式字符串,輸出表列);
fscanf(文件結構指針,格式字符串,輸出表列);

  兩個函數的參數都一樣,怎麼寫到文件中的就怎麼讀進來,還是比較方便的,用過printf函數的應該都知道上面的函數怎麼用的吧(不知道就趕緊找資料吧,(*^__^*) 嘻嘻……),唯一不同的是,這裏多了個文件結構指針的參數,看過知蟻前面幾篇文章的,應該對這個比較熟悉了。

fprintf函數和fscanf函數示例程序

下面的示例程序包括fprintf寫入文件、fscanf讀取文件以及printf輸出到屏幕等操作。

C語言知蟻博客
void main()
{
    FILE *pWrite,*pRead;
    struct student tStu,tStu2;
    char *pName = “letuknowit”;

    pWrite=fopen(“stu_scores.txt”,“w”);
    if(NULL == pWrite)
    {
        return;
    }

    //初始化結構體信息,用於寫入文件
    memcpy(tStu.chName,pName,20);
    tStu.nID = 1;
    tStu.fScores[0] = 89.0;
    tStu.fScores[1] = 87.0;
    tStu.fScores[2] = 88.0;

    //寫入數據到文件中
    fprintf(pWrite,“%d %s %f %f %f\n,tStu.nID,tStu.chName,tStu.fScores[0],tStu.fScores[1],tStu.fScores[2]);
    fclose(pWrite);

    pRead=fopen(“stu_scores.txt”,“r”);
    if(NULL == pRead)
    {
        return;
    }
    //從文件中讀取數據(主要下面參數中的&)
    fscanf(pRead,“%d %s %f %f %f\n,&tStu2.nID,tStu2.chName,&tStu2.fScores[0],&tStu2.fScores[1],&tStu2.fScores[2]);
    fclose(pRead);

    //打印讀取的數據到屏幕上
    printf(“%d %s %.1f %.1f %.1f\n,tStu2.nID,tStu2.chName,tStu2.fScores[0],tStu2.fScores[1],tStu2.fScores[2]);
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章