C語言之文件讀寫——fscanf(),fprintf()詳解

1.fscanf():

fscanf()函數的頭文件是<stdio.h>,

函數原型 int fscanf(FILE*stream, constchar*format, [argument...]);

其功能爲根據數據格式(format)從輸入流(stream)中寫入數據(argument);

【參數】stream爲文件指針,format爲格式化字符串,argument 爲格式化控制符對應的參數。

 

從文件指針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;

}

 

參考:https://blog.csdn.net/jhg1204/article/details/7932187

           https://blog.csdn.net/sinat_24310873/article/details/53141429

 

 

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