gpt4 book ai didi

c - C 中的内存分段

转载 作者:行者123 更新时间:2023-11-30 18:39:21 26 4
gpt4 key购买 nike

我在做作业时遇到了麻烦。我正在准备一个关于链表的小项目。我编写了一个程序,它向我显示有关段错误的错误消息。我不知道这些东西是什么意思以及我该怎么办。我期待收到你们的一些解决方案这是代码

‪#‎include‬ <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct Data{
int numero;
char *prenom;
float taille;
}donnees;
typedef struct list linked_list;
struct list{
donnees *data;
linked_list *next;
};
int main(){
int taille,i;
linked_list *tete,*ptr,*tete1;
tete=ptr=NULL;
printf("\nentrer le nombre des etudiants a introduire dans la liste : ");
scanf("%d",&taille);
for(i=0;i<taille;i++){
ptr=(linked_list*)malloc(sizeof(linked_list));
printf("\nentrer le numero de l'etudiant :");
scanf("%d",&(ptr->data->numero));
printf("\nentrer le nom de l'etudiant :");
scanf("%s",(ptr->data->prenom));
printf("\nentrer le numero de l'etudiant :");
scanf("%f",&ptr->data->taille);
ptr->next=NULL;
if(tete==NULL)tete=ptr;
else{
ptr->next=tete;
tete=ptr;
}
printf("votre liste s'ecrit sous la forme :\n[tete]->");
ptr=tete;
while(ptr!=NULL){
printf("[ %d - %s -%f ]->",ptr->data->numero,ptr->data->prenom,ptr- >data->taille);
}
printf("NULL\n");
}
return 0;
}

最佳答案

我不明白语言(用于变量命名和打印语句),但看起来

 scanf("%d",&(ptr->data->numero));

是问题所在。在取消引用之前,您需要为 ptr->data 分配内存。

解释一下,data也是一个指针。在使用它之前,您需要为其分配内存 [malloc()],就像您为 ptr 所做的那样。

同样的情况适用

scanf("%s",(ptr->data->prenom));

这里,使用前需要先分配dataprenom

另外,请do not cast Cmalloc() 及其族的返回值。

关于c - C 中的内存分段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30086445/

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