C语言.如何添加字符串到链表



由于某些原因,我不能得到这个工作。下面是我在代码中的函数,如果这还不够帮助,我很乐意贴出整个代码。

char addcity()
{
    citylist=malloc(sizeof(struct city));
    struct city *temp;
    char addcity[50];
    char addstate[50];
    char addpopulation[50];
    char addregion[50];
    char addzipcode[50];
    //temp = citylist;
    //citylist=malloc(sizeof(struct city));
    //struct city *ptr=citylist;
    struct city *ptr= (struct city*)malloc(sizeof(struct city));
    printf("Which city would you like to add?: ");
    scanf("%s",addcity);
    printf("Which state is the city in?: ");
    scanf("%s",addstate);
    printf("What is the population?: ");
    scanf("%s", addpopulation);
    printf("what is the region?: ");
    scanf("%s", addregion);
    printf("what is the zipcode?: ");
    scanf("%s", addzipcode);
    int found;
    ptr->name=addcity;
    ptr->statecode=addstate;
    ptr->population=addpopulation;
    ptr->region=addregion;
    ptr->zipcode=addzipcode;
    ptr->next=NULL;
    curr->next=ptr;
    curr=ptr;
    printlist();  //this just prints out the whole list.

有时我得到一个分割错误,而其他时候它只是不工作。我是否必须使用strcpy(a,b)来复制字符串

printf("Which city would you like to add?: ");
scanf("%s",&ptr->name);
printf("Which state is the city in?: ");
scanf("%s",&ptr->statecode);
printf("What is the population?: ");
scanf("%s",&ptr->population);
printf("what is the region?: ");
scanf("%s",&ptr->region);
printf("what is the zipcode?: ");
scanf("%s",&ptr->zipcode);

您的代码中有几个问题。您的第一个问题是,您在结构中设置指针指向局部变量。一旦代码离开addcity(),这些局部变量将不再有效,任何试图使用它们的行为都将陷入麻烦。

要将本地字符串复制到您的结构中,您需要使用某种形式的字符串复制函数,例如strcpy(a,b)

printf("Enter String ::");
scanf("%s",&ptr->str); 

相关内容

  • 没有找到相关文章

最新更新