아래에 c로 작성된 2 개의 ASCII 파일을 열고 읽는 코드를 추가했습니다. 코드는 아무런 문제없이 컴파일되지만, 코드를 실행하면 먼저 파일을 제대로 읽지 못하고 모든 값을 0으로 읽습니다. 둘째, printf를 실행 한 후 세그먼트 오류 (코어 덤프) 오류가 발생합니다. 루프 외부에있는 명령. fpin 파일에는 22 개의 행이 있고 fpin1에는 2621440 개의 행이 있습니다. 이 문제에서 해결 방법을 찾을 수 없었습니다. 누군가가이 문제에 대한 해결책을 얻을 수 있도록 도와 주시면 고맙겠습니다.c float 및 int 길이 문제 (세그멘테이션 오류)
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
FILE *fpin,*fpin1;
int i,j,m[1000];
int *n1;
float radp[1000], decdp[1000];
float *rad1,*decd1,*temp1;
n1 = (int *)malloc(sizeof(int));
rad1 = (float *)malloc(sizeof(float));
decd1 = (float *)malloc(sizeof(float));
temp1 = (float *)malloc(sizeof(float));
if((fpin = fopen("tmp","r")) == NULL)
{
printf("No such file\n");
exit(1);
}
if((fpin1 = fopen("lfmap.txt","r")) == NULL)
{
printf("No such file\n");
exit(1);
}
for (i=0;i<22;i++){
fscanf(fpin,"%d %f %f",&m[i],&radp[i],&decdp[i]);
printf("%d %f %f\n",i,radp[i],decdp[i]);
}
for (j=0;j<2621440;j++){
fscanf(fpin1,"%d %f %f %f",&n1[j],&rad1[j],&decd1[j],&temp1[j]);
printf("%d %f %f %f\n",n1[j]+1,rad1[j],decd1[j],temp1[j]);
}
printf("%d\n",j);
fclose(fpin);
fclose(fpin1);
free(n1);
free(rad1);
free(decd1);
free(temp1);
}
감사합니다, Krishnakumar
[C에서 malloc의 결과를 캐스팅하지 마십시오] (http://stackoverflow.com/questions/605845/do-i-cast-the-result-of-malloc). 그리고 먼저 코드를 들여 쓰기를 배우십시오. –
감사합니다. 내 잘못이야. 그리고 들여 쓰기에 대해 유감입니다. – Krishnakumar