gpt4 book ai didi

c - 编译此代码时出现错误

转载 作者:行者123 更新时间:2023-11-30 20:35:59 27 4
gpt4 key购买 nike

我正在编写代码来创建正确的链接列表。请告诉我这个程序的错误errors while compiling

    #include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef void* cadtpointer;
struct cadtlist
{
cadtpointer data;
struct cadtlist* next;
}; /* structure*/

struct cadtlist* cadt_list_init( )
{
struct cadtlist * temp, * head,* list;
int num;
char *p, s[100];
printf(" enter the number of nodes to be created");
while (fgets(s, sizeof(s), stdin))
{
num = strtol(s, &p, 10);
if (p == s || *p != '\n')
{
printf("Please enter an integer: ");
}
else break;
}
while (num != 0)
{
if(NULL != list )
{
list->next = cadt_create_list(temp);
}
else
{
list = cadt_create_list(temp);
head = list;
}
num--;
}


}
struct cadtlist* cadt_create_list(struct cadtlist * list)
{
int n;
char * data;
struct cadtlist * newnode;
newnode = ( struct cadtlist *) malloc( sizeof(struct cadtlist));
if( NULL != newnode )
{
printf(" enter the data to be added");
scanf("%s", data);
n= cadt_add_list(data,newnode);
if( 1 == n)
return newnode;
}
else
{
printf(" error while allocating memory");
exit(1);
}
}
struct cadtlist* cadt_add_list( char* item,struct cadtlist * list)
{
list->data = item;
if(NULL == list->data)
{
return list;
}
else
{
printf(" error while adding data");
exit(1);
}
}

int main()
{
struct cadtlist* list1;
list1 = cadt_list_init();

return 0;
}

最佳答案

1) - 对这些前向声明使用原型(prototype)

2) - 您正在传递局部变量的地址

char * data; /* Local variable */
struct cadtlist * newnode;
newnode = ( struct cadtlist *) malloc( sizeof(struct cadtlist));
if( NULL != newnode )
{
printf(" enter the data to be added");
scanf("%s", data);
n= cadt_add_list(data,newnode); /* Passing local variable */

并将地址分配给另一个变量

struct cadtlist* cadt_add_list( char* item,struct cadtlist * list) 
{
list->data = item;

请注意,当您退出cadt_create_list()时,数据不再可用(可能包含垃圾)

更改为

struct cadtlist* cadt_add_list( char* item,struct cadtlist * list) 
{
list->data = strdup(item); /* Reserve space for the string */

关于c - 编译此代码时出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36931450/

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