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