C說話 格局化讀寫文件詳解。本站提示廣大學習愛好者:(C說話 格局化讀寫文件詳解)文章只能為提供參考,不一定能成為您想要的結果。以下是C說話 格局化讀寫文件詳解正文
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 2 struct 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↙
Hua 1 14 99↙
Tom 2 15 90.500000
Hua 1 14 99.000000
翻開 D:\\demo.txt,發明文件的內容是可以浏覽的,格局異常清楚。用 fprintf() 和 fscanf() 函數讀寫設置裝備擺設文件、日記文件會異常便利,不只法式可以或許辨認,用戶也能夠看懂,可以手動修正。
假如將 fp 設置為 stdin,那末 fscanf() 函數將會從鍵盤讀取數據,與 scanf 的感化雷同;設置為 stdout,那末 fprintf() 函數將會向顯示器輸入內容,與 printf 的感化雷同。例如:
#include<stdio.h> int main(){ int a, b, sum; fprintf(stdout, "Input two numbers: "); fscanf(stdin, "%d %d", &a, &b); sum = a + b; fprintf(stdout, "sum=%d\n", sum); return 0; }
運轉成果:
Input two numbers: 10 20↙
sum=3036.html
以上就是對 C說話格局化讀寫文件的材料整頓,後續持續彌補相干材料,感謝年夜家對本站的支撐!