C - 如何使结构指向不同的字符串



我有一个结构体,在该结构中,我有一个字符指针,但是我正在创建此结构的不同实例,但是当我更改一个结构中的指针时,另一个结构也在更改。

#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
}

相关内容

  • 没有找到相关文章

最新更新