gpt4 book ai didi

c - 使用malloc()时出错

转载 作者:行者123 更新时间:2023-11-30 14:57:00 24 4
gpt4 key购买 nike

我正在尝试将信息从文件导入到结构中,但是当我使用 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 后面>,这是一个坏主意。

更成问题的是,您没有指定它指向逻辑中的任何内容,因此指针值指向乱码。这是一个奇迹,你的程序一直运行到调用 free 为止,更不用说你声称有问题的后面的语句了,因为它试图释放更多的乱码(这不是没有使用malloc分配),然后(再次)取消引用并分配给甚至更多的乱码

要么你删除了逻辑中错误的部分以形成 MCVE ,如果不填写空白(不要这样做),我们就不可能重现问题,或者...我的猜测是你的书不适合你,因为读正经书的人往往不会有这种误解;相信我,我去过那里!请参阅this list找到一本更好的书。

关于c - 使用malloc()时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44223350/

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