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說話格局化讀寫文件的材料整頓,後續持續彌補相干材料,感謝年夜家對本站的支撐!