【发布时间】:2019-04-06 15:36:41
【问题描述】:
我不熟悉数据结构和链表。 我正在使用 C 中的树进行名为 Amazon 产品可用性检查器的项目。所以我想在树的每个节点中存储字符串,但是在存储字符串时,代码没有显示任何错误,但输出也没有被打印出来。我已将节点传递给打印函数以打印字符串,但没有打印任何内容。
我只分享了一个字符串和一个节点的代码。我正在开发 ubuntu,我正在使用 C 语言进行编码。
这是我的代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct node {
char clothing[10];
struct node *next;
} node;
// 1) creating node
node *create(char const ch[]) {
int i;
node *head = NULL;
node *temp = NULL;
node *p = NULL;
temp = (struct node *)malloc(sizeof(struct node));
temp->clothing[10] = ch[10];
temp->next = NULL;
return temp;
}
// 2) print
void print(node *head) {
node *p = head;
while (p != NULL) {
printf("%s", p->clothing);
p = p->next;
}
}
int main() {
node *head = create("clothing");
print(head);
}
【问题讨论】:
-
这里显示代码最受赞赏的方式是minimal reproducible example。你提出了更多的代码难题。另外,不清楚你在问什么。
-
请了解缩进和 cmets。两者都有助于使您的代码更具可读性和更少的断裂性。
-
在
create、temp和p中没有使用,所以删除它们。并使用strcpy复制字符串。temp -> clothing[10] = ch[10]正在分配一个字符,实际上该字符超出了范围,因此您正在破坏内存。 -
@TomKarzes 你能详细说明你的答案吗?这将意味着很多。谢谢。
-
@chqrlie 是的,当然......我不知道如何接受堆栈溢出的答案......谢谢!!
标签: c string linked-list