[英]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.