У меня есть функция, которая находит римские цифры чисел, переданных в массиве, и сохраняет их в массиве строк и возвращает массив строк в main(). Но когда я пытаюсь получить доступ к возвращаемому массиву строк в main(), код выходит из строя из-за ошибки сегментации. Может кто-нибудь объяснить мне, почему это происходит, и как я могу исправить свой код?Ошибка сегментации при возврате char ** из функции
Добавлены комментарии в код, где виден дефект сегментации и где он работает нормально. Большое спасибо за ваше время и помощь.
int find_lookup_index(int temp)
{
int j=0;
while(1)
{
if(temp>=lookup_int[j] && temp<lookup_int[j+1])
break;
j++;
}
return j;
}
char** romanizer(int num_size, int* num)
{
int i,j,temp;
char result[num_size][20];
for(i=0;i<num_size;i++)
{
strcpy(result[i],"\0");
if(num[i]%1000 == 0)
{
strcpy(result[i],"M");
continue;
}
j=find_lookup_index(num[i]);
temp=num[i];
while(temp>0)
{
strcpy(result[i],strcat(result[i],lookup_char[j]));
temp = temp - lookup_int[j];
j = find_lookup_index(temp);
}
}
**/* WORKS CORRECTLY HERE */**
for(i=0;i<num_size;i++)
printf("%s\n",result[i]);
return (char **)result;
}
int main()
{
int size,i;
char **result;
int arr[3] = {3,11,499};
result = romanizer(3,arr);
**/* NOT WORKING - SEGMENTATION FAULT - WHY ? */**
for(i=0;i<3;i++)
printf("%s\n",result[i]);
return 0;
}
Возможный дубликат [Можно ли получить доступ к локальной папке за пределами ее области?] (Http://stackoverflow.com/questions/6441218/can-a-local-variables-memory-be-accessed-outside-its- scope) –
Вы не только возвращаете локальный автоматический var-адрес, но и не тот тип, который вы производите. a 'char [n] [m]' does * not * выразить как 'char **' и что он не будет компилироваться без этого hard-cast, должен быть намеком на это. Пусть одновременно исправить обе проблемы одновременно. – WhozCraig