字符串创建的分段错误

时间:2016-09-28 17:37:55

标签: c string segmentation-fault

我一直在开发一个程序来读取文件中的数据,然后当我尝试创建一个恒定大小的字符串时,我收到了一个Seg Fault。

FILE *in = fopen("entrada.txt", "r");

t_mapa *mapa;
t_jogador *jogadores;
jogadores = NULL;

int i, num_jogadores, tamanho_mapa;
char *token1, *token2;
char str1[4], str2[4]; //RIGHT HERE WHEN I CREATE THE STRING, I RECEIVE A SEG FAULT

if(in == NULL){
    printf("Arquivo Não pode ser aberto");
}


fscanf(in, "%d", &tamanho_mapa);
printf("%d\n", tamanho_mapa); //Debugger
mapa->mapa = cria_mapa(tamanho_mapa);
preenche_mapa(mapa, in, tamanho_mapa);
fscanf(in, "%d", &num_jogadores);
printf("%d %p\n", num_jogadores, jogadores); //Debugger
jogadores = cria_jogadores(num_jogadores);


for(i=0; i<num_jogadores; i++){
    fscanf(in, "%s %s", str1, str2);
    token1 = strtok(str2, ",");
    token2 = strtok(NULL, ",");
    jogadores[i].linha = atoi(token1);
    jogadores[i].coluna = atoi(token2);
}

1 个答案:

答案 0 :(得分:1)

所以我有一个不同的理论,我认为下一行是罪魁祸首

mapa->mapa = cria_mapa(tamanho_mapa);

只有在此处给出的代码中,您才会像这样定义mapa

t_mapa *mapa;

您似乎无法将其初始化为任何内容,但随后使用->运算符取消引用它。

除此之外,我没有直接看到任何错误。我们需要更多的代码来提供更好的答案。