【发布时间】:2014-06-29 04:59:32
【问题描述】:
我一直犹豫是否要发布有关此问题的问题,因为我担心会问一个愚蠢的问题,但是这里是:
我目前正在尝试创建一个程序,该程序将获取整个字符串,将它们放入 char 数组并将这些 char 数组传输到链表。我已经完成了将数组实际放入链表的所有工作。
我最初尝试使用数组本身创建每个节点,这只是给了我数组的第一个元素。然后我发现我需要使用strcpy()。
我不确定此时出了什么问题,但我认为这取决于内存分配,因为它给了我一个段错误。然而,这令人困惑,因为 rach 节点的内存分配已经处理完毕。
感谢您的帮助,这部分已经让我发疯了几个小时。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define SIZE 100
struct node {
char info;
struct node *link;
} *start;
void create(char[]);
void display();
void insert_end(char[]);
int main() {
int i;
start=NULL;
char data[SIZE];
printf("Please enter a word: ");
fgets(data, SIZE, stdin);
create(data);
for(i=0; i<5; i++)
{
printf("Please enter a word: ");
fgets(data, SIZE, stdin);
insert_end(data);
}
display();
return 0;
}
void create(char data[])
{
struct node *temp;
temp = (struct node *)malloc(sizeof(struct node));
if (start == NULL)
{
strcpy(temp->info,data);
temp->link=NULL;
start=temp;
}
}
void display()
{
struct node *ptr;
ptr = start;
while (ptr!=NULL)
{
printf("%c", ptr->info);
ptr=ptr->link;
}
}
void insert_end(char data[])
{
struct node *ptr, *tempnode;
ptr = start;
while(1)
{
if(ptr->link != NULL)
{
ptr=ptr->link;
}
else
break;
}
tempnode=(struct node *)malloc(sizeof(struct node));
strcpy(tempnode->info,data);
tempnode->link=NULL;
ptr->link=tempnode;
}
【问题讨论】:
标签: c linked-list strcpy arrays