gpt4 book ai didi

C - 将字符串从一个结构复制到节点时出现问题

转载 作者:行者123 更新时间:2023-11-30 15:05:26 25 4
gpt4 key购买 nike

我正在尝试将字符串从一个结构中的字段复制到另一个结构(节点),以便我最终可以创建一个哈希表。但是,我在实际的字符串复制中似乎遇到了一些问题。我创建了一个 for 循环来迭代源结构中的字符串,并且我知道迭代工作正常,因为如果我 printf 源字符串 (data[i].c_name),它们会正常打印。不幸的是,当我尝试 printf 目的地(class_id)时,它似乎是空的(因此当然我的哈希函数没有做太多事情)。任何对这里潜在问题的见解将不胜感激。如果我没有提供足够的背景信息,请告诉我。

#define LENGTH 30
#define MAX_OBS 80000

typedef struct
{
char c_name[LENGTH];
char s_name[LENGTH];
double value[MAX_OBS];
}
sample;

typedef struct node
{
char class_id[LENGTH];
struct node *next;
}
node;

{
char class_id[LENGTH];

for (int i = 0; i < total_columns; i++)
{
// malloc a new node pointer for each new class label
node *new_node = malloc(sizeof(node));

// check that there was sufficient memory
if (new_node == NULL)
{
return 6;
}

// copy c_name into node -- failing - class_id is empty
strcpy(new_node->class_id, data[i].c_name);
printf("%s\n", class_id);
}
}

最佳答案

删除您打印的最后一个char class_id[LENGTH];,因为它从未初始化。然后切换 printf() 以使用 strcpy 的实际目标。

 strncpy(new_node->class_id, data[i].c_name, LENGTH); printf("%.*s\n", LENGTH, new_node->class_id);

我还在我的代码中设置了一些长度限制,以确保您不会在没有终端\0 的情况下因错误输入而做坏事。永远不要盲目相信您的 C 输入,除非您以自动防故障方式生成它。

免责声明:桌面检查更改。实际调试留给学生作为练习。

关于C - 将字符串从一个结构复制到节点时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39842792/

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