写入文件时C分段错误

时间:2014-08-15 01:48:34

标签: c

我试图计算此文件中每行的平均值:

 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;
     

}

我认为这个程序很好。但是当我执行它时,它会显示Segmentation fault。在fprintf(des,"%d\n",(num1[0]+num1[1]+num1[2]+num1[3])/4);之前,一切都很好。有人能指出这个问题吗?

2 个答案:

答案 0 :(得分:0)

我认为至少你应该检查指针des和fp,如果其中一个是NULL,你肯定会得到一个SEG FAULT。

要找出确切的原因,请使用printf()设置检查点,或使用调试器。

答案 1 :(得分:0)

由于这似乎可能是家庭作业,我不会准确地说出我认为问题所在。但我会指出一些你似乎没有考虑到的事实:

1 - 字符串函数如strtok()期望字符串由空字节

终止

2 - memcpy()不是字符串函数,只是将字节从一个位置复制到另一个位置

相关问题