#include <stdio.h>#include <math.h>#define input "list.txt"#define max 5
int fgetList(FILE*inp, int list[], int max_num);
int main(){ FILE *inp; int count; int x[max],y[max],z[max]; inp = fopen(input, "r"); count = fgetList(inp, x, max); printf("%d/n",count); count = fgetList(inp, y, max); printf("%d/n",count); int sum=0; for(int i=0;i<count;i++) { z[i]=x[i]*y[i]; sum += z[i]; } double result = sqrt(sum); printf("x/ty/tz/n"); for(i=0;i<count;i++) { printf("%d/t%d/t%d/n",x[i],y[i],z[i]); } printf("%f", result); fclose(inp); return 0;}
int fgetList(FILE*inp, int list[], int max_num){ int i=0; int temp; fscanf(inp,"%d",&temp); while(-9 != temp && i<max_num) { list[i] = temp; i++; fscanf(inp,"%d",&temp); } if(i == max_num) { printf("array size is not enough!!/n");
do{ fscanf(inp,"%d",&temp); }while(-9 != temp); /// 此处这段代码是十分有必要的,因为它会让文件指针正确的指到下一个数组的开头。
} return i; }
这段代码的有意思的地方在于我的一个错误!
int fgetList(FILE*inp, int list[], int max);
这时候报出一个编译错误说这行代码有错,一直找不出来。
最后我将函数拆成不带参数的函数,没有错误,一个、两个都没有错。原来是
max 出错。
因为我在程序开始时写了
#define max 20
这时候编译认为这两个变量属于重复声明,故而报错!!
这个错误自己应该谨记!!!!