gpt4 book ai didi

c - txt 解析 C 中的段错误

转载 作者:太空宇宙 更新时间:2023-11-04 01:08:14 24 4
gpt4 key购买 nike

您好,我正在尝试解析一个每行有 2 个 double 值的 txt 文件。第一行有一个整数,表示 txt 文件的总行数。我有一个 double COORD[NPOIN][2] 的 Nx2 矩阵,我想将每个 txt 行的第一个 double 放入 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]);
}

关于c - txt 解析 C 中的段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18855711/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com