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亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb