程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> C說話 格局化讀寫文件詳解

C說話 格局化讀寫文件詳解

編輯:關於C++

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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved