#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
这时候编译认为这两个变量属于重复声明,故而报错!!
这个错误自己应该谨记!!!!