我有一个结构体,在该结构中,我有一个字符指针,但是我正在创建此结构的不同实例,但是当我更改一个结构中的指针时,另一个结构也在更改。
#include <stdio.h>
#include <stdlib.h>
typedef struct human{
int age;
char name[100];
} Human;
int main(){
FILE *s = fopen("h.txt","r");
if(s==NULL){
printf("file not available");
}
for(int i=0 ;i<5;i++){
Human h;
fscanf(s,"%d",&h.age);
fscanf(s,"%s",h.name);
insertintolinkedlist(h);
// this method is going to insert the human into the linked list
}
return 0;
}
链表中的所有人年龄不同但名字相同,这是怎么回事!
您需要分配内存来保存名称。
char* name
只是一个指针 - 它没有用于保存名称的内存。
您将其更改为
char name[100];
请记住检查您输入 Human.name 的名称不超过 100 个字符。
要使用链表,您可以执行以下操作:
typedef struct human{
int age;
char name[100];
struct human* next;
} Human;
int main()
{
Human* head = NULL;
Human* tail = NULL;
for(.....)
{
Human* h = malloc(sizeof(Human));
if (head == NULL) head = h;
if (tail != NULL)
{
tail->next = h;
}
tail = h;
h->next = NULL;
h->age = ....;
strncpy(h->age, "..name..", 100);
}
// ..... other code
// Remember to free all allocated memory
}