将数字从文本文件读取到 C 中用户定义函数中的数组

Posted

技术标签:

【中文标题】将数字从文本文件读取到 C 中用户定义函数中的数组【英文标题】:Reading numbers from a text file to an array in user defined function in C 【发布时间】:2015-10-28 17:25:42 【问题描述】:

我在从文本文件中扫描值时遇到问题,我以前从未真正使用过文件 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;

程序应该从 .txt 文件中读取 read_temps 中的值,计算 calc_results 中的最大值、最小值和平均值。它完成所有这些并编译,但它没有正确读取值。 .txt 文件包含诸如 87、65、92 之类的数字,当我运行我的程序时,输出与 19863578 一样的大数字几乎对所有值都重复,除了最大值、最小值和平均值。我不知道该怎么办:(

这些是文本文件中的值

    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

【问题讨论】:

寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现它所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。请参阅:如何创建最小、完整和可验证的示例。 Reading from a File to an Array - C的可能重复 每一行都有固定的数字模式吗?如果是,那是什么?因为这很重要。 【参考方案1】:

您的代码中的一个错误是您正在调用

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

在您的 main 函数中。并表演

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

在您的 read_temps 函数中,它将一直迭代 25 次,并始终在文件中最后一个整数之后返回垃圾值。

【讨论】:

你会怎么写呢? mly128 你可以看看我的回答【参考方案2】:

这是因为你返回 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();

【讨论】:

以上是关于将数字从文本文件读取到 C 中用户定义函数中的数组的主要内容,如果未能解决你的问题,请参考以下文章

C语言如何读取TXT全部字符?

从文本文件中读取单词并存储到 C 中的动态数组 Valgrind 错误中

将文本文件中的数据读取到结构数组中

如何从文本文件创建二维数组并在 c 中打印到新文件

从文件中读取文本到无符号字符数组

c语言 如何读取中文字符串