我想要一个基本上持有一个字符串(而不是一个字符数组)的链接列表。我不断收到分段错误(核心转储),我不知道在哪里/当letter
定义为char letter;
和你的编译器可以让你做string->letter = malloc(sizeof(char));
没有抱怨,这意味着我如何分配内存错误链接列表的C内存分配
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct mystring
{
char letter;
int size;
int isHead;
struct mystring*next;
};
struct mystring * create_empty_string(int size)
{
struct mystring * string = malloc(sizeof(struct mystring));
string->size = size;
string->isHead = 0;
return string
}
struct mystring * make_string(struct mystring * list,char * string)
{
for(int i = 0 ; i < strlen(string) ; i++)
{
list->letter= string[i];
list = list->next;
}
return list;
}
void printList(struct mystring* list) {
//start from the beginning
while(list->letter != '\0') {
printf("(%c) ",list->letter);
list = list->next;
}
}
int main()
{
struct mystring * string = create_empty_string(10);
string = make_string(string, "hey");
printList(string);
}
设置较高的警戒级别并注意警告。例如,'.. \ main.c:19:1:error:control reach non-void function'(当函数返回时,函数不返回任何东西) –
'string-> letter = malloc(的sizeof(char)的);”没有。你从编译器得到了多少错误/警告? – ThingyWotsit
2014.c:18:17:warning:指向从'void *'分配给'char'的整数转换的不兼容指针 string-> letter = malloc(sizeof(char)); ^ ~~~~~~~~~~~~~~~~~~~~ 2014.c:21:1:警告:控制达到非无效功能的结束[-Wreturn-type] }这些是我得到的两个警告 – realicado