1. 程式人生 > >C語言檔案的讀入與寫入

C語言檔案的讀入與寫入

學了一學期的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;
}