簡體   English   中英

txt解析C中的分段錯誤

[英]segmentation fault in txt parsing C

嗨,我正在嘗試解析每行2個雙打的txt文件。 在第一行有一個整數,它是txt文件的總行數。 我有一個Nx2雙精度矩陣COORD [NPOIN] [2],我想將每個txt行的第一個雙精度數放入COORD [IPOIN] [0],第二個雙精度數放入COORD [IPOIN] [1]。 下面的代碼部分應啟發您:D

COORD = (double**)malloc(NPOIN*sizeof(double*)); 

for(int i=0; i<NPOIN; i++)
{
  COORD[i] = (double*)malloc(NDIME*sizeof(double));
}

fin = fopen("coord", "r");
fgets(line, 256, fin);
NPOIN = atoi(line);
char *token;

for(IPOIN=0; IPOIN<NPOIN; IPOIN++)
{
   fgets(line, 256, fin);
   token = strtok(line," \t" );
   COORD[IPOIN][0] = atof(token); //line 891          
   token = strtok(NULL, " \t");
   COORD[IPOIN][1] = atof(token);

}

我編譯了代碼,一切正常。但是,當我運行它時,gdb在891行顯示分段錯誤。有人可以給我一些建議嗎?

這是使用printf調試的方法:
盡管您應該真正學會使用GDB或其他調試器來逐步執行代碼

fin = fopen("coord", "r");
if (fin == NULL)  printf("failed to open\n");


fgets(line, 256, fin);
printf("Got first line as %s\n", line);

NPOIN = atoi(line);
printf("NPOIN is now %d\n", NPOIN);

char *token;

for(IPOIN=0; IPOIN<NPOIN; IPOIN++){
      fgets(line, 256, fin);
      printf("Got a line as %s\n", line);

      token = strtok(line," \t" );
      printf("Got token #1 %s\n", token);

      COORD[IPOIN][0] = atof(token); //line 891
      printf("Found float %f\n", COORD[IPOIN][0]);

      token = strtok(NULL, " \t");
      printf("Got token #2 %s\n", token);
      COORD[IPOIN][1] = atof(token);
      printf("Found float %f\n", COORD[IPOIN][1]);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM