이 파일의 각 줄 평균을 계산하려고했습니다.
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] 삭제
몇 마디 만하겠습니다