C語言檔案的讀入與寫入
阿新 • • 發佈:2019-02-02
學了一學期的C語言,還不怎麼會使用指標,檔案的讀入和寫入也不能很順利的寫出來,說起來好慚愧。碰巧今天朋友讓我幫他編寫一個C語言程式,對他數模要用到的大量資料求平均值(每天不同時刻對某一物理量進行檢測,持續幾十天,求那些時刻測得的物理量的平均值)。程式碼很簡單,關鍵是要掌握怎樣對檔案進行讀入和寫入(當然對於菜雞的我來說,懶惰讓我在大一沒有好好學習,正好趁著這個契機把檔案的基本的操作學會:))
分模組來編寫還是很重要的,可以使程式看起來簡潔明瞭。寫了兩個函式:從data檔案中讀入資料複製給二維陣列,和把運算的平均值結果寫入到result檔案中。
對於新手來說,要注意程式碼中二維陣列的函式呼叫。void Readfromfile(double flow[][N]) N不能忘記了,如果沒寫就等著報錯吧
要注意的一點是你可以把txt檔案存入到C語言的project裡,在資料夾裡的命名為:如程式碼中的result,不用在後面加txt,txt只是一種文字型別,在讀入函式中才要寫上來識別? 另外寫入的txt檔案可以不用先建立,程式會自動生成的。 如圖:
#include <stdio.h> #include <stdlib.h> #define D 58//days' amount #define N 96 //number of day's data void Writetofile(double result[]) { FILE *fp; int i; if((fp=fopen("result.txt","w"))==NULL) { printf("Wrong write."); exit(0); } for(i=0; i<N; i++) { fprintf(fp,"%lf\n",result[i]); } fclose(fp); } void Readfromfile(double flow[][N]) { FILE *fp; int i,j; if((fp=fopen("data.txt","r"))==NULL) { printf("Wrong read."); exit(0); } for(i=0; i<D; i++) { for(j=0; j<N; j++) { fscanf(fp,"%lf",&flow[i][j]); } } fclose(fp); } int main() { int i,j; double flow[D][N],result[N]= {0}; Readfromfile(flow); for(i=0; i<N; i++) { for(j=0; j<D; j++) { result[i]=result[i]+flow[j][i]; } result[i]=result[i]/D; } Writetofile(result); printf("Success."); return 0; }