c語言中fscanf和fprintf

2021-08-07 11:14:00 字數 2342 閱讀 5297

很多時候我們需要寫入資料到檔案中時都覺得很困擾,因為格式亂七八槽的,可讀性太差了,

於是我們就想有沒有什麼函式可以格式化的從檔案中輸入和輸出呢,還真有。下面我將講解

一下fscanf和fprintf的強大之處。

1、fscanf(可以從乙個檔案流中格式化讀出資料,遇到空格或回車就停止)

原型: intfscanf(file *stream, const char *format, ...); //fscanf(檔案流指標,格式字串,輸出表列);

引數:file *stream :檔案流指標

const char *format, ... :字串的格式

例子 :

fscanf(fp,"%s %s %d",new1->number,new1->staddress,&new1->price);(這樣寫的話資料輸入到檔案中時每個資料中間就會有乙個空格)

或者寫成:

fscanf(fp,"%s,%s,%d",new1->number,new1->staddress,&new1->price);(這樣寫的話資料輸入到檔案中時每個資料中間就會有乙個『,』)

2、fprintf(可以從乙個檔案流中格式化寫入資料)

原型: intfprintf(file *stream, const char *format, ...); //fprintf(檔案流指標,格式字串,輸出表列);

引數:a、file *stream :檔案流指標

b、const char *format, ... :字串的格式

例子 :

fprintf(fp,"%s %s %d\n",new->number,new->staddress,new->price);    //同上

或者寫成:

fprintf(fp,"%s,%s,%d\n",new->number,new->staddress,new->price);  //同上

下面是**:

#include #include 

#include

#include

#define length 100 //

陣列的大小

typedef

struct

*node,node;

int main(int argc,char *argv)

node

new,new1; //

new用來存放寫入到檔案中的資料,new1用來存放從檔案中讀出的資料

//為兩個結構體指標分配空間

new = (node)malloc(sizeof

(node));

new1 = (node)malloc(sizeof

(node));

//清空

memset(new,0,sizeof

(node));

memset(new1,

0,sizeof

(node));

strcpy(

new->number,"

20170816");

strcpy(

new->staddress,"南寧"

);

new->price = 100

;

fprintf(fp,

"%s %s %d\n

",new->number,new->staddress,new->price); //

格式化寫入資料到檔案中

fseek(fp,

0, seek_set); //

檔案指標重置,因為上面把資料寫入檔案的時候已經把檔案流指標定位到檔案尾了,所以要重新定位到檔案頭

fscanf(fp,

"%s %s %d

",new1->number,new1->staddress,&new1->price);//

格式化從檔案中讀出資料

printf("

%s %s %d\n

",new1->number,new1->staddress,new1->price);

//釋放兩個結構體指標

free(new

);

free

(new1);

fclose(fp);

//關閉檔案

return0;

}

這是我在ubuntu上執行的結果:

螢幕上的輸出:

開啟test.txt檔案中的內容:

C語言中fscanf函式

編輯 函式名 fscanf 功 能 從乙個流中執行格式化輸入,fscanf遇到空格和換行時結束,注意空格時也結束。這與 fgets有區別,fgets遇到空格不結束。返回值 整型,成功返回讀入的引數的個數,失敗返回eof 1 用法 1 intfscanf file stream,constchar f...

C語言中的fscanf函式

實現功能 test.txt中存放如下資料,把資料讀入到整型陣列xx 50 中。1 2 3 4 5 6 7 8 9 10 21 22 23 24 25 26 27 28 29 30 41 42 43 44 45 46 47 48 49 50 61 62 63 64 65 66 67 68 69 70 ...

C語言中fgets和fscanf區別詳解

c語言中fgets和fscanf區別詳解 一 作用上的大概區別 fgets 從檔案中讀取ydklbiid一行資料存入www.cppcns.com緩衝區 fgets遇到回車才會結束,不對空格和回車做任何轉換就錄入到緩衝區,結束後再往緩衝區寫多乙個 0,所以它是讀一行資料 fscanf 從檔案中讀取一段...