简单的数学w /值从文件读入数组

时间:2017-02-05 18:47:22

标签: c arrays file

#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]放入表达式时它不起作用。有什么建议吗?

1 个答案:

答案 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 $