我正在尝试使用getStats
函数两次 - 每个输入文件一次。我应该使用一个名为 statFile[]
的 char 数组作为参数传递给原型以选择要使用的文件。目前,我知道如何一次使用一个文件(通过在原型中显式命名文件)以使其工作,但不了解如何将其用于两个输入。提前感谢!
#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 Filen");
else if (au == NULL)
printf("Error Opening Filen");
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: %dn", i);
for(p=0; p<8 ; p++)
{
printf("%d %d %d %dn", compPass[p], attPass[p], numYds[p], numTD[p]);
}
return 0;
}
您已经传入了统计信息文件名,因此需要更改:
FILE *al = fopen("alabama2013.txt","r");
自
FILE *al = fopen(statFile,"r");
你可以这样做:
#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: %sn", i + 1, farray[i]);
}
}
int main()
{
char *farray[] = {"file1", "file2"};
print_fname(farray, 2);
return 0;
}
希望能有所帮助。