C語言之檔案讀寫——fscanf(),fprintf()詳解

來源:互聯網
上載者:User

1.fscanf():從檔案指標fp指向的檔案中,按format中對應的控制格式讀取資料,並儲存在agars對應的變數中;

原型: fscanf(FILE *fp, const char *format, agars)

#include<stdio.h>

#include<stdlib.h>

int main()

{

    FILE *fp;

    char ch;

    fp = fopen("test.txt","r");

    if(fp == NULL)

    {

         printf("Open filefailure!");

         exit(1);

    }

    else

    {

         fscanf(fp,"%s",&ch);

    }

    printf("%s\n",ch);   

    fclose(fp);

    return 0;

}

註:對於上面else中的內容需注意一下幾點:

1.如果要讀取一個整數(該整數必須在所存變數的資料類型表示的範圍之內)則為:fscanf(fp, “%d”, &ch),而此時ch應該定義為int;若讀取的資料大於int所能表示的範圍,則讀取的資料螢幕顯示為負數,即讀取的資料發生越界,如果此時的ch依然為char型,則運行時報錯(記憶體讀寫錯誤)。

2.如果要讀取字串,則ch應該定義為char型數組或指標(指標需分配空間),而不能將其定義為char型,否則也會報錯(記憶體讀寫錯誤);

3.輸出資料時的資料格式應該和讀取資料時的控制格式相同,除非進行強制轉換。

4.使用fscanf()時,其中的變數agars應該取其地址;

5.對於檔案的操作,記得檔案開啟操作後要關閉。

對於fscanf()主要應用在按行讀取一個檔案中的所有內容或依次讀取每行相隔的幾個資料,具體參照以下樣本:

#include<stdio.h>

#include<stdlib.h>

int main()

{

    FILE *fp;

    char *ch, *ah;

    ch =(char *) malloc(sizeof(char) * 100);

    ah =(char *) malloc(sizeof(char) * 100);

    fp = fopen("test.txt","r");

    if(fp == NULL)

    {

         printf("Open filefailure!");

         exit(1);

    }

    else

    {

         while(!feof(fp))

        {

             fscanf(fp, “%s”, ch);

             printf(“%s”, ch);//這兩行為按行讀取所有資料

             fscanf(fp, “%s%s”, ch, ah);

             printf(“The value of ch and ah is:%s %s\n”,ch,ah);//這兩行為分別讀取每行相隔的幾個資料            

        }

    }

    printf("%s\n",ch);

    free(ch);

    free(ah);

    fclose(fp);

    return 0;

}

2.fprintf():將agars(參數表)內各項的值,按format(格式控制字元串)所表示的格式,將資料格式為字串的形式寫入到檔案指標fp指向的檔案中。

原型:fprintf(FILE *fp, const char *format, agars)

fprintf()和fscanf()相對應,其用法也基本和fscanf()相同。具體參照以下樣本:

#include<stdio.h>

#include<stdlib.h>

int main()

{

    FILE *fp;

    fp = fopen("test.txt","a+");

    fprintf(fp,“%d %d”,123456,789);//將123456和789寫到test.txt檔案中

    fprintf(fp,"%s %s","China","ChongQing"); //將字串China和ChongQing追加寫到test.txt檔案中

    fclose(fp);

    return 0;

}

 

 

 





聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.