簡體   English   中英

在C中用戶定義的函數中將數字從文本文件讀取到數組

[英]Reading numbers from a text file to an array in user defined function in C

我在掃描文本文件中的值時遇到了麻煩,我以前從未真正使用過文件I / O,而且我對用戶定義的函數仍然很不滿意,因此我幾乎肯定錯誤是在第一個函數中,我不知道如何解決它,但是我在編程方面還很新,所以請多多包涵。

到目前為止,我的代碼是

  #include <stdio.h>
  #include <stdlib.h>

int read_temps(void)
{
    int i;
    int num;
    int fileArray[25];

    FILE *file;
    file=fopen("temperatures.txt", "r");

    if (file == NULL)
    {
        printf("Error Reading File\n");
        exit(0);
    }
    for (i=0; i<25; i++)
    {
    fscanf(file,"%d", &fileArray[i]);
    }

    fclose(file);
    return fileArray[i];

}


int calc_results (int a[], int n)
{
    int i, j, maximum, minimum, average,sum;
    float avg;

printf ("Temperature conditions on October 26th, 2015:\n");
 printf("Time  Temperature in Degrees F \n");

   for(i = 0; i<25;i++)
    {
    printf("%d\t%d\n", i, a[i]);

        if(maximum < a[i])
            maximum = a[i];
        if(minimum > a[i])
            minimum = a[i];

            sum+=a[i];
    }

    printf("Maximum Temperature for the day: %d\n", maximum);
    printf("Minimum Temperature for the day: %d\n", minimum);

    avg=(float)sum/25;
    printf("Average Temperature for the day: %f\n", avg);

    return 0;
}


int main ()
{
    int average,i;

    int temp[25];
        for (i=0;i<25;i++)
        temp[i]= read_temps(); //calling user function for file input

calc_results(temp,i); //calling user function

return 0;
}

該程序應該以read_temps讀取.txt文件中的值,並以calc_results計算最大值,最小值和平均值。 它會執行所有這些操作並進行編譯,但不會正確讀取值。 .txt文件包含87、65、92之類的數字,當我運行程序時,輸出的值是相同的大數,例如19863578,幾乎對所有值(最大,最小和平均值)均重復。 我不知道該怎么辦 :(

這些是textfil上的值

    67
    67
    69
    71
    77
    79
    80
    80
    82
    85
    87
    88
    91
    93
    94
    95
    95
    96
    94
    90
    85
    82
    81
    77
    74

輸出應該是

    Temperature Conditions on October 9, 2015: 
    Time of Day     Temperature in degrees F 
    0               85
    1               80
    2               97
    3               90
    4               73
    ........
    25              68

您的代碼中的一個錯誤是您正在調用

for (i=0;i<25;i++)
temp[i]= read_temps();

在您的main職能。 和表演

for (i=0; i<25; i++)
    {
    fscanf(file,"%d", &fileArray[i]);
    }

在您的read_temps函數中,該函數將read_temps進行25次迭代,並始終在文件中的最后一個整數之后返回垃圾值。

這是因為您返回了fileArray [i]; 在for循環之后,當i = 25且數組中沒有這樣的值

改為:

    int* read_temps(void)
{
    int i;
    int num;
    int fileArray[25];

    FILE *file;
    file=fopen("temperatures.txt", "r");

    if (file == NULL)
    {
        printf("Error Reading File\n");
        exit(0);
    }
    for (i=0; i<25; i++)
    {
    fscanf(file,"%d", &fileArray[i]);
    }

    fclose(file);
    return fileArray;

}

int* temp;
temp = read_temps();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM