fscanf() 和 fprintf() 函數與前面使用的 scanf() 和 printf() 功能相似,都是格式化讀寫函數,兩者的區別在于 fscanf() 和 fprintf() 的讀寫對象不是鍵盤和顯示器,而是磁盤文件。
這兩個函數的原型為:
int fscanf ( FILE *fp, char * format, ... );
int fprintf ( FILE *fp, char * format, ... );
fp 為文件指針,format 為格式控制字符串,... 表示參數列表。與 scanf() 和 printf() 相比,它們僅僅多了一個 fp 參數。例如:
FILE *fp;int i, j;char *str, ch;fscanf(fp, "%d %s", &i, str);fprintf(fp,"%d %c", j, ch);
fprintf() 返回成功寫入的字符的個數,失敗則返回負數。fscanf() 返回參數列表中被成功賦值的參數個數。
【示例】用 fscanf 和 fprintf 函數來完成對學生信息的讀寫。
#include<stdio.h>#define N 2struct stu{ char name[10]; int num; int age; float score;} boya[N], boyb[N], *pa, *pb;int main(){ FILE *fp; int i; pa=boya; pb=boyb; if( (fp=fopen("D://demo.txt","wt+")) == NULL ){ printf("Cannot open file, press any key exit!"); getch(); exit(1); } //從鍵盤讀入數據,保存到boya printf("Input data:/n"); for(i=0; i<N; i++,pa++){ scanf("%s %d %d %f", pa->name, &pa->num, &pa->age, &pa->score); } pa = boya; //將boya中的數據寫入到文件 for(i=0; i<N; i++,pa++){ fprintf(fp,"%s %d %d %f/n", pa->name, pa->num, pa->age, pa->score); } //重置文件指針 rewind(fp); //從文件中讀取數據,保存到boyb for(i=0; i<N; i++,pb++){ fscanf(fp, "%s %d %d %f/n", pb->name, &pb->num, &pb->age, &pb->score); } pb=boyb; //將boyb中的數據輸出到顯示器 for(i=0; i<N; i++,pb++){ printf("%s %d %d %f/n", pb->name, pb->num, pb->age, pb->score); } fclose(fp); return 0;}運行結果:
Input data:
Tom 2 15 90.5
主站蜘蛛池模板:
嵊泗县|
鄂托克旗|
桐城市|
和林格尔县|
民乐县|
治多县|
华亭县|
吉木萨尔县|
上饶市|
广南县|
绵阳市|
上高县|
东台市|
延长县|
信宜市|
林甸县|
康保县|
商城县|
皮山县|
怀远县|
大关县|
泽州县|
丹棱县|
潜山县|
辰溪县|
四子王旗|
武城县|
开鲁县|
西乌珠穆沁旗|
华池县|
临夏县|
商水县|
台东县|
工布江达县|
鲜城|
虹口区|
涟源市|
沙坪坝区|
连南|
广汉市|
桦川县|