C-使用malloc()时错误



我正在尝试将信息从文件导入到结构,但是当我使用malloc时,程序停止运行。我以前做过类似的功能,我不知道为什么不起作用。

这是我的阅读文件功能:

void ler_fich_salas(List_sala sala)
{
    FILE *fich;
    List_sala l;
    char linha[10];
    fich = fopen("fich_salas.txt","r");
    l = l->next;
    if (fich == NULL)
    {
        return;
    }
    else
    {
         /*ou l=l->next*/
        while (!feof(fich))
        {
            printf("A");
            fgets(linha, 10, fich);
            printf("Z");
            printf("%s",linha);/*testar se le bem no fich*/
            printf("B");
            free(l->nome_sala);
            l->nome_sala = (char *)malloc(TAM*sizeof(char));
            printf("C");
            strcpy(l->nome_sala, strtok(linha,"n"));
            printf("D");
            l = l->next;
        }
    }
    fclose(fich);
}

这是我的结构:

typedef struct Sala_node *List_sala;
typedef struct Sala_node
{
    char *nome_sala;
    List_sala next;
}Cada_sala;

任何帮助将不胜感激!预先感谢。

List_sala l;
/* SNIP */
l = l->next;

从使用->运算符的使用中,l必须是指针类型,这意味着您将指针类型隐藏在typedef后面,这是一个坏主意。

更有问题的是,您尚未将其分配给逻辑中的任何内容,因此指针值 gibberish 。这是您的程序一直延续到free的奇迹,更不用说声明您声称有问题的声明,因为这是试图批准的 More Gibberish (没有使用malloc分配的东西(和然后(再次(解雇并分配给更多的gibberish 。

您是否将逻辑的错误部分切开以形成MCVE,从而使我们能够在没有填充空白的情况下重现问题不可能的(不要这样做(或...我的猜测是您的书对您不起作用,因为阅读体面书籍的人往往不会误解这种误解。相信我,我去过那里!请参阅此列表以找到一本更好的书。

相关内容

  • 没有找到相关文章

最新更新