很多時候我們需要寫入資料到檔案中時都覺得很困擾,因為格式亂七八槽的,可讀性太差了,
於是我們就想有沒有什麼函式可以格式化的從檔案中輸入和輸出呢,還真有。下面我將講解
一下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這是我在ubuntu上執行的結果:#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;
}
螢幕上的輸出:
開啟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 從檔案中讀取一段...