#include <stdio.h>
int main(void)
{
int file, i, total, min, max, num;
float avg;
int scores[1000];
int morescores[1000];
min = 10000000;
max = -10000000;
FILE *afile;
afile = fopen("scores.txt", "r");
i=0;
while(fscanf(afile, "%d", &num) != EOF) {
i++;
}
printf("The number of values in scores.txt is %d\n", i);
//so we know there are 35 values in this file
fclose(afile);
afile = fopen("scores.txt", "r");
i=total=0;
while(fscanf(afile, "%d", &scores[i]) != EOF) {
i++;
total += scores[i];
avg = total/i;
if (scores[i] < min) {
min = scores[i];
} else if (scores[i] > max) {
max = scores[i];
}
}
printf("The total of the integers is %d.\n", total);
printf("The number of integers in the file is %d.\n", i);
printf("The average of the integers is %f.\n", avg);
printf ("The minimum is %d.\n", min);
printf ("The maximum is %d.\n", max);
fclose(afile);
return (0);
}
我试图从文件scores.txt中读取所有值,并使用这些值进行数学表达式。我不知道在使用它们进行数学运算时如何调用文件中的特定值。当我将得分[i]放入表达式时它不起作用。有什么建议吗?
答案 0 :(得分:1)
您必须移动i
while(fscanf(afile, "%d", &scores[i]) != EOF) {
i++;
在循环结束时:
while(fscanf(afile, "%d", &scores[i]) != EOF) {
...
i++;
}
因为您将值存储在scores[n]
中并使用scores[n+1]
...
您的代码变为:
#include <stdio.h>
int main(void) {
int num;
float avg;
int scores[1000];
int morescores[1000];
int min = 10000000;
int max = -10000000;
FILE * afile = fopen("scores.txt", "r");
if( ! afile ) {
perror("scores.txt");
return 1;
}
int i = 0;
while( fscanf( afile, "%d", &num ) != EOF ) {
i++;
}
printf("The number of values in scores.txt is %d\n", i);
fclose(afile);
afile = fopen("scores.txt", "r");
int total = 0;
i = 0;
while( fscanf( afile, "%d", &(scores[i])) != EOF) {
total += scores[i];
if (scores[i] < min) {
min = scores[i];
}
else if (scores[i] > max) {
max = scores[i];
}
i++;
}
avg = total/i;
printf("The total of the integers is %d.\n", total);
printf("The number of integers in the file is %d.\n", i);
printf("The average of the integers is %f.\n", avg);
printf("The minimum is %d.\n", min);
printf("The maximum is %d.\n", max);
fclose( afile );
return 0;
}
执行变为:
aubin@Breizh-Atao ~/Dev/C $ echo 1 2 3 4 5 6 7 8 9 10 > scores.txt
aubin@Breizh-Atao ~/Dev/C $ gcc minMax.c -o MinMax
aubin@Breizh-Atao ~/Dev/C $ ./MinMax
The number of values in scores.txt is 10
The total of the integers is 55.
The number of integers in the file is 10.
The average of the integers is 5.000000.
The minimum is 1.
The maximum is 10.
aubin@Breizh-Atao ~/Dev/C $