2
我做了一個函數,加載行並將其保存到數組中,每當getline函數加載一個新行時,它就會進行dinamically分配,但是當我想要從數組中打印所有保存的行時,我的代碼結束了。你能告訴我問題在哪裏嗎?當我刪除功能,並把所有東西,它的工作正常。傳遞二維數組的字符作爲參數
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void load(char **array,int *index) {
int riadok;
size_t len = 0;
char *buffer = NULL;
printf("Slova:\n");
while((riadok = getline(&buffer,&len,stdin)) != -1) {
if (riadok == 1){
break;
}
array = (char**) realloc (array, (*index + 1) * sizeof(char*));
array[*index] = (char*) malloc ((riadok + 1) * sizeof(char*));
strcpy(array[*index], buffer);
*index = *index + 1;
}
}
int main()
{
int index = 0;
int i;
char **array = NULL;
load(array,&index);
for (i = 0; i < index; i++)
printf("%s",array[i]);
return 0;
}
所以,在我的代碼我coppied陣列爲什麼它在致力於這就是功能我的功能和外部功能,它沒有工作,給了我分段故障,因爲我想打印數組,指出無處?不知道我是否理解正確。編輯代碼compilator給我3錯誤。 – kvway
差不多。 'main'中的'array'指向'NULL',它不會被'load'函數修改。解引用它將調用未定義的行爲。 – haccks
獲取3個錯誤:slova.c:18:68:錯誤:無效轉換從'void *'到'char **'[-fpermissive] * array = realloc(array,(* index + 1)* sizeof(char *)); ^ slova.c:19:63:錯誤:從'void *'無效轉換爲'char **'[-fpermissive] array [* index] = malloc((riadok + 1)* sizeof(char *) ); ^ slova.c:20:39:錯誤:無法將參數'1'轉換爲'char *'爲'char * strcpy(char *,const char *)' strcpy(array [*索引],緩衝區); – kvway