1. 程式人生 > >fprintf與fscanf語法應用

fprintf與fscanf語法應用

學過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]);
}