我想要一個基本上持有一個字符串(而不是一個字符數組)的鏈接列表。我不斷收到分段錯誤(核心轉儲),我不知道在哪裏/當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