0

我试图使用该getStats函数两次 - 每个输入文件一次。我应该使用一个 char 数组statFile[]作为参数传递给原型,以选择要使用的文件。目前我知道如何一次使用一个文件(通过在原型中显式命名文件)使其工作,但不明白如何将它用于两个输入。提前致谢!

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

#define AUBURN "auburn2013.txt"    //input data files
#define ALABAMA "alabama2013.txt"   //input data files
#define NUMGAMES 13

int  getStats( char statFile[], int compPass[], int attPass[], int numYds[], int numTD[] );
void analysis( int compPass[], int attPass[], int numYds[], int numTD[], double aveYds[], double pectCmp[], int tdPts[], int numGames[]);


int main(void)
{
   int compPass[NUMGAMES],
          attPass[NUMGAMES],
          numYds[NUMGAMES],
          numTD[NUMGAMES];

   double bamaStats,
          auburnStats,
          setAuburn,
          setBama;


   FILE *au = fopen("auburn2013.txt","r");  
   FILE *al = fopen("alabama2013.txt","r");  


   if (al == NULL)
      printf("Error Opening File\n");

   else if (au == NULL)
      printf("Error Opening File\n");

   bamaStats = getStats(ALABAMA, compPass, attPass, numYds, numTD);

   return 0;
}

int  getStats( char statFile[], int compPass[], int attPass[], int numYds[], int numTD[] )
{
   int i,
       p,
       k = sizeof(compPass[NUMGAMES]);
   FILE *al = fopen("alabama2013.txt","r");  
   while (fscanf(al ,"%d %d %d %d", &compPass[i], &attPass[i], &numYds[i], &numTD[i]) !=EOF)
   {

      i++;
   }

   printf("Number of Games with data: %d\n", i);

   for(p=0; p<8 ; p++)
   {
         printf("%d %d %d %d\n", compPass[p], attPass[p], numYds[p], numTD[p]);

   }

   return 0;
}
4

2 回答 2

1

您已经传入了 stat 文件名,因此需要更改:

FILE *al = fopen("alabama2013.txt","r"); 

FILE *al = fopen(statFile,"r"); 
于 2013-11-13T04:51:24.697 回答
0

你可以这样做:

#include <stdio.h>
#include <assert.h>

void print_fname(char **farray, int fnum)
{
    int i;
    assert(farray != NULL);
    for (i = 0; i < fnum; ++i) {
        assert(farray[i] != NULL);
        printf("file name %d: %s\n", i + 1, farray[i]);
    }
}

int main()
{
    char *farray[] = {"file1", "file2"};
    print_fname(farray, 2);
    return 0;
}

希望能有所帮助。

于 2013-11-13T05:03:12.520 回答