【发布时间】:2016-06-15 12:52:05
【问题描述】:
我是开发的初学者,所以我的老师给了我一个任务来完成,我需要在链表中输入几个字符串,在我输入 print 后,它们需要以正确的顺序打印,从第一个到最后。
这是我得到的:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct Node {
char data;
struct Node *next;
}node;
char createlist(node *pointer, char data[100]) {
while (pointer->next != NULL) {
pointer = pointer->next;
}
pointer->next = (node*) malloc(sizeof(node));
pointer = pointer-> next;
pointer->data = *data;
pointer->next = NULL;
}
int main() {
node *first, *temp;
first = (node*) malloc(sizeof(node));
temp = first;
temp->next = NULL;
printf("Enter the lines\n");
while (1) {
char data[100];
gets(data);
createlist(first, data);
if (strcmp(data, "print") == 0)
printf("%s\n", first->data);
else if (strcmp(data, "quit") == 0)
return (0);
};
}
当我运行它时,我得到: 输入以下行: asdfsdf 打印 (空)
任何帮助将不胜感激,因为这是我第一次使用链表。
【问题讨论】:
-
你不应该使用
gets(),它有不可避免的缓冲区溢出风险。 -
您应该在第一次使用调试器时进行。
-
将错误类型的数据传递给
%sforprintf()调用未定义的行为。 -
没有那个就不行。我正在使用 Kdevelop。
标签: c linked-list singly-linked-list