gpt4 book ai didi

无法将数据添加到结构中

转载 作者:行者123 更新时间:2023-11-30 20:34:18 25 4
gpt4 key购买 nike

我正在尝试用C语言处理结构体。这是我的代码:

#include <stdio.h>
#include <ctype.h>
#include <string.h>
#include <stdlib.h>

typedef struct _list
{
char *string;
struct _list *next;
}LIST_T;

LIST_T* structHead;
LIST_T* structTail;
LIST_T* typedefHead;
LIST_T* typedefTail;
LIST_T* structList;
LIST_T* typedefList;

void typedefAndStructHandle(int choice,char* data);
void mystrdup(char* newString,char* originalString);

void typedefAndStructHandle(int choice,char* data)
{
if(choice==1)
{
structList=(LIST_T*) calloc(1,sizeof(LIST_T));
if(structList==NULL)
{
printf("Error the program will terminate\n");
}
else
{
mystrdup(structList->string,data);
printf("structList->string: %s\n",structList->string);
if(structHead==NULL)
{
structHead=structList;
}
else
{
structTail->next=structList;
}
structTail=structList;
}
}
else if(choice==2)
{
typedefList=(LIST_T*) calloc(1,sizeof(LIST_T));
mystrdup(typedefList->string,data);

if(typedefHead==NULL)
{
typedefHead=typedefList;
}
else
{
typedefTail->next=typedefList;
}
typedefTail=typedefList;
}
else
{
printf("Something wrong with choice, try again\n");
}
}

void mystrdup(char* newString,char* originalString)
{

newString=malloc(strlen(originalString)+1);
if(newString==NULL)
{
printf("newString, error allocation Terminate program\n");
exit(0);
}
else
{
strcpy(newString,originalString);

}
}

int main()
{
typedefAndStructHandle(1,"dummy");

}

该程序将复制单词“dummy”并将其写入链接列表中。我创建了自己的 strdup,名为 mystrdup。我认为 mystrdup 有问题。就在一线

printf("structList->string: %s\n",structList->string);

它应该打印单词structList->string: dummy,但我的输出是structList->string: null有人知道如何修复它吗?

最佳答案

mystrup 需要返回字符串,而不是将其作为参数。

所以,替换

 void mystrdup(char* newString,char* originalString)

 char* mystrdup(char* originalString)

然后在本地声明newString并返回它。

调用者需要将返回值保存在变量中,并最终对其调用free

关于无法将数据添加到结构中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42842145/

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