【发布时间】:2014-12-31 12:18:28
【问题描述】:
我在下面附加了我的代码,它打开并读取了用 c 编写的 2 个 ascii 文件。 代码编译没有任何问题,但是当我执行代码时,首先,它没有正确读取文件,将所有值打印/读取为零,其次,在执行 printf 命令后给出分段错误(核心转储)错误这是在循环之外。文件 fpin 有 22 行, fpin1 有 2621440 行。我无法找到解决此问题的方法。如果有人可以帮助我解决此问题,我将不胜感激。
#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);
}
谢谢, 克里希纳库玛
【问题讨论】:
-
Don't cast the result of
mallocin C。并且先学会缩进代码。 -
谢谢。我的错。对缩进感到抱歉。
标签: c segmentation-fault malloc