gpt4 book ai didi

c - Strdup() 不工作

转载 作者:行者123 更新时间:2023-11-30 17:54:44 26 4
gpt4 key购买 nike

可能这是非常基本的问题,每个人都会对我大喊大叫,但我已经尝试解决这个问题几个小时了,但再也无法忍受了。我有这个结构

struct node
{
Key_Type element;
tree_ptr left, right;
};

我正在尝试使用 strdup 将一个单词放入元素中,如下所示:

newNode->element = strdup(word);

我知道它可能不起作用,因为我试图分配一个指向普通变量的指针,但我不知道如何解决这个问题。

Table insert(Key_Type word,Table root)
{
struct node *newNode = malloc(sizeof(struct node));
struct node *left = malloc(sizeof(struct node));
struct node *right = malloc(sizeof(struct node));
newNode = root->head;
//fprintf (stderr, "Hi\n");
while(newNode->element != NULL)
{
//printf("%s",word);
if(strcmp(word,newNode->element) == 0)
{
fprintf (stderr, "Hi\n");
return root;
}
while(strcmp(word,newNode->element) == -1)
{
//fprintf (stderr, "Hi\n");
newNode = newNode->left;
//fprintf (stderr, "Hi\n");
}//if
//fprintf (stderr, "Hi\n");
while(strcmp(word,newNode->element) == 1)
{
//fprintf (stderr, "Hi\n");
newNode = newNode->right;
//fprintf (stderr, "Hi\n");
}//else if
}
//createNode(word);
newNode->element = strdup(word);
newNode->left = left;
newNode->right = right;
//fprintf (stderr, "Hi\n");
//printf("%s",root->head->element);
return root;
}

最佳答案

扩展 @unwind 的答案,strdup() 不是标准 C 函数,仅在 POSIX 兼容系统上可用。您的系统中可能没有实现 strdup

这是 strdup() 的可能实现

char *strdup(const char *c)
{
char *dup = malloc(strlen(c) + 1);

if (dup != NULL)
strcpy(dup, c);

return dup;
}

关于c - Strdup() 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14770609/

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