我正在尝试计算此文件中每行的平均值:
alpha 94 86 72 83 beta 83 65 98 54 charlie 69 70 59 43
代码是这样的:
#include "stdio.h" #include "stdlib.h" #include "math.h" #include "string.h" int main() { char *n,*p; char line[150]; char line1[149]; int average=0,sum=0,inte=0,i=0,a=0,b=0,c=0,d=0,g; FILE *fp,*des; char *array[5],*array2[5]; fp=fopen("score.txt","r"); des=fopen("avarage.txt","w+"); int num1[3]={0,0,0}; while (1) { if (fgets(line,150, fp) == NULL) break; int i=0; memcpy( line1, &line[0], strlen(line)-1 ); array[0] = strtok(line1," "); while(array[i]!=NULL) { array[i++] = p; p=strtok(NULL," "); inte=atoi(p); num1[i]+=inte; } } fprintf(des,"%d\n",(num1[0]+num1[1]+num1[2]+num1[3])/4); fclose(fp); fclose(des); return 0;
}
我认为这个程序很好,但是当我执行它时,它显示了细分错误。而且fprintf(des,"%d\n",(num1[0]+num1[1]+num1[2]+num1[3])/4);
一切都很好。能指出一点问题吗?
我认为至少您应该检查指针des和fp,如果其中之一为NULL,则肯定会出现SEG FAULT。
要找出确切原因,请使用printf()设置检查点,或使用调试器。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句