[轉]C語言中的文件格式化讀寫函數:fprintf和fscanf


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

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

struct student
{
    char    chName[20];    //姓名
    int    nID;        //學號
    float    fScores[3];    //3門課的成績
};

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

fprintf函數和fscanf函數調用方式

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

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

fprintf函數和fscanf函數示例程序

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

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

轉載於知蟻博客地址:http://www.letuknowit.com/archives/99

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM