В этом коде:
char ** get_wanted_g_matrix(int pocetradek /*number of lines*/) // get wanted g matrix
{
char ** string;
printf("Zadejte hledanou matici:\n");
int i = 0;
if(( * string = (char ** )malloc(100 * sizeof(char *))) == NULL)
Вы разыменовываете string
, но оно не инициализировано, поэтому вы пишете в произвольное место в памяти. Измените это * string
на string
. То же самое относится и здесь:
if((* string = (char **)realloc(* string, 100 * ( i - 1 ) * sizeof(char *))) == NULL)
.. и соответствующим строкам в get_searched_g_matrix()
.
В этой строке:
if((i > 1) && (*string[i-1] != strlen(*string[i])))
Вы передаете char
на strlen()
, когда вы должны передавать char *
. Я подозреваю, что вы имеете в виду только strlen(string[i])
, но эта строка кажется несколько бессмысленной. Та же проблема и в get_searched_g_matrix()
, и в первых трех вызовах strlen()
в search()
.
Ваш get_searched_g_matrix()
может упасть с конца без возврата значения - вам нужно подумать, что возвращать, если feof(stdin)
не соответствует действительности.
В main()
ваш вызов search()
передает char
значения, но функция ожидает char **
. Вы, вероятно, имеете в виду:
printf("Matice nalezena %d krat.\n", search( string1, string2 ));
(Вышеприведенного недостаточно для исправления вашего кода - у вас, похоже, есть некоторые логические проблемы. Но это необходимое начало.)
В будущем вы должны скомпилировать свой код с включенным более высоким уровнем предупреждений, а затем исправить проблемы, которые определяет компилятор (если вы используете gcc, скомпилируйте с -Wall
).