【发布时间】:2014-10-12 14:49:53
【问题描述】:
我正在制作一个函数来对 txt 文件中的数据进行排序,以生成其中数据的最小值、平均值和最大值。
我想在多个文件上重复使用该功能。因此,我想将文件的指针作为参数传递给函数。但是,我的编译器给了我以下错误:
LA1.c:19:10:错误:未知类型名称“文件” void mmm(FILE *ifile, int *i, int *min, int *max, float *mu);
我在下面附上了我的代码。请排除一些无关变量,因为我预计稍后会使用这些变量,但尚未完成该程序的大部分内容。任何帮助表示赞赏。
提前致谢。
/* Purpose: (1) Sort Data from 5 different years (2) Calculate Standard Deviation */
/* (3) find max & min from each set (4) calculate deviation standard deviation */
/* units, AKA σ (5) convert to letter grade */
/*************************************************************************/
/* Outline: (A) funct: scan data ifile (main) calc mean (μ), max, min */
/* (B) funct: rescan data and calc sigma (C) main: Rescan data, calc Δ μετα' σ and letter */
/* grade each for each datum. (D) Print to minitor in main. Use dow while?loop for rows*/
/*************************************************************************/
/*prototypes*/
void mmm(FILE *ifile, int *i, int *min, int *max, float *mu);
/* mmm stands for min, max, mean */
float sigma (int *num, float *sigma); /*calculates sigma(standard deviation) */
/* libraries */
#include <stdio.h>
#include <math.h>
void main (void) {
/* main variable declarations max of i vars used for rows loop counter in main */
float sigma, mu;
int i, i09, i10, i11, i12, i13, min, max, f09max, f09min, f10max, f10min, f11max,
f11min, f12max, f12min, f13max, f13min;
FILE *ifile;
ifile=fopen("2009.txt", "r");
mmm(&ifile, &i, &min, &max, &mu);
fclose(ifile); /* file must be closed to rescan in other functions */
}
void mmm(FILE *ifile, int *i, int *min, int *max, float *mu) {
printf("running function mean \n");
int sum, num;
*max=0; /* Score range is between 0 and 100 in a class, thus use of fixed initials */
*min=100;
*i=0;
num=0;
sum=0;
while (fscanf(ifile, "%i", &num) !=EOF) {
printf("Variable num is %i. \n", num);
fscanf(ifile, "%d", &num);
if (num>*max) {*max=num;} /* assigns global max and min */
if (num<*min) {*min=num;} /* to be stored to different years in funct main*/
*i=*i+1;
sum= sum + num; /* sums for average calculation */
}
*mu= ((float)sum/(*i));
printf("The min is %i. The max is %i.\n", *min, *max);
printf("i is %i, sum is %i, and mu is %f \n", *i, sum, *mu);
}
【问题讨论】:
-
您是否尝试过将#include 语句放在顶部?