C、 将文件指针作为参数传递到函数中
我正在制作一个函数来对txt文件中的数据进行排序,以便生成其中数据的最小值、平均值和最大值 我想在多个文件上重复使用该函数。因此,我想将文件指针作为参数传递到函数中。但是,我的编译器给了我以下错误: LA1.c:19:10:错误:未知类型名“FILE” 无效mmm(文件*ifile、int*i、int*min、int*max、float*mu) 我在下面附上了我的代码。请排除一些无关的变量,因为我预期稍后会使用这些变量,但尚未完成本程序的大部分。感谢您的帮助 提前谢谢C、 将文件指针作为参数传递到函数中,c,file,function,pointers,C,File,Function,Pointers,我正在制作一个函数来对txt文件中的数据进行排序,以便生成其中数据的最小值、平均值和最大值 我想在多个文件上重复使用该函数。因此,我想将文件指针作为参数传递到函数中。但是,我的编译器给了我以下错误: LA1.c:19:10:错误:未知类型名“FILE” 无效mmm(文件*ifile、int*i、int*min、int*max、float*mu) 我在下面附上了我的代码。请排除一些无关的变量,因为我预期稍后会使用这些变量,但尚未完成本程序的大部分。感谢您的帮助 提前谢谢 /* Purpose: (
/* 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);
}
/*目的:(1)对5个不同年份的数据进行排序(2)计算标准偏差*/
/*(3)从每组中找出最大值和最小值(4)计算偏差标准偏差*/
/*单位,也称σ(5)转换为字母等级*/
/*************************************************************************/
/*大纲:(A)功能:扫描数据ifile(主)计算平均值(μ),最大值,最小值*/
/*(B)函数:重新扫描数据和计算σ(C)主要:重新扫描数据、计算Δμετασ和字母*/
/*为每个基准进行分级。(D) 在主屏幕中打印到minitor。对行使用dow while?循环*/
/*************************************************************************/
/*原型*/
无效mmm(文件*ifile、int*i、int*min、int*max、float*mu);
/*mmm代表最小值、最大值、平均值*/
浮点西格玛(int*num,float*sigma)/*计算西格玛(标准偏差)*/
/*图书馆*/
#包括
#包括
真空总管(真空){
/*main变量声明main中用于行循环计数器的i变量的最大值*/
浮点西格玛,μ;
输入i,i09,i10,i11,i12,i13,最小值,最大值,f09max,f09min,f10max,f10min,f11max,
f11min,f12max,f12min,f13max,f13min;
文件*ifile;
ifile=fopen(“2009.txt”,“r”);
mmm(i文件、i文件、最小值、最大值和最小值);
fclose(ifile);/*文件必须关闭才能在其他函数中重新扫描*/
}
void mmm(文件*ifile、int*i、int*min、int*max、float*mu){
printf(“正在运行的函数表示\n”);
整数和,num;
*max=0;/*在一个类中,分数范围在0到100之间,因此使用固定的首字母*/
*最小值=100;
*i=0;
num=0;
总和=0;
while(fscanf(ifile、%i、&num)!=EOF){
printf(“变量num是%i.\n”,num);
fscanf(i文件、%d、&num);
如果(num>*max){*max=num;}/*分配全局最大值和最小值*/
如果(num您在#include
行之前声明函数,因此编译器尚未看到文件类型的定义。只需将#include
行移到文件顶部即可。您在#include
行之前声明函数,因此编译器尚未看到文件
尚未键入。只需将#include
行移到文件顶部。您在#include
行之前声明函数,因此编译器尚未看到文件
类型的定义。只需将#include
行移到文件顶部。在#include
行之前调用函数,因此编译器还没有看到文件类型的定义。只需将#include
行移到文件的顶部即可。在C中,所有内容的声明都需要在使用之前进行声明。因为您包含了头文件,其中文件
是decla红色在使用文件
的函数原型之后,编译器将不知道文件
是什么,因为此时(在函数声明处)它还没有看到这种声明。在C语言中,所有东西的声明都需要在使用之前进行。由于在使用文件的函数原型之后包含了文件
声明的头文件,编译器将不知道文件
是什么,因为此时(在函数声明处)它还没有看到这种声明。在C语言中,所有东西的声明都需要在使用之前进行。由于在使用文件的函数原型之后包含了文件
声明的头文件,编译器将不知道文件
是什么,因为此时(在函数声明处)它还没有看到这种声明。在C语言中,所有东西的声明都需要在使用之前进行。由于在使用文件的函数原型之后包含了文件
声明的头文件,编译器将不知道文件
是什么,因为此时(在函数声明处)它没有看到这个声明。C中的“#include”语句是预处理器指令。预处理器是C编译器在源代码上调用的程序,它遵循这些指令中给出的命令,并在编译之前对文件进行文本处理。当它看到“#include”语句时,它会捕获这些文件并将它们插入到代码中。通过将这些指令放在函数原型之后,可以使那些其他源文件中定义的所有类型仅对遵循这些指令的程序部分可见。因此,基本上,将这样的预处理器指令放在程序的最顶端,以使所有用户都可以使用它们de.C中的“#include”语句是预处理器指令。预处理器是C编译器在源代码上调用的程序,它遵循这些指令中给出的命令,并在编译之前对文件进行文本操作。当它看到“#include”语句时,它会抓取这些文件并将它们插入到您的源代码中de.通过将这些指令放在函数原型之后,您使那些其他源文件中定义的所有类型只对遵循这些指令的程序部分可见。因此,基本上,将这样的预处理器指令放在最上面