Как сказано в комментариях, в вашем коде много fl aws.
Сначала в основном вы пытаетесь cmp("ala", dictionary);
, но dictionary
является необъявленной переменной. Я думаю, вы хотели использовать результат вашего вызова dictionary()
в вызове cmp
. Поэтому вам нужно сохранить результат dictionary()
в вашей переменной dictionary
. На самом деле это невозможно, потому что ваш dictionary()
fun c ничего не возвращает и освобождает выделенный dict, прежде чем его можно будет использовать.
Я мог бы продолжить так, но вот исправленная версия вашего кода . Не стесняйтесь обращаться за разъяснениями.
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
char **dictionary()
{
char **dict = (char**)malloc(sizeof(char*) * 5);
int i = 0;
for (i = 0; i < 5; i++)
dict[i] = (char*)malloc(sizeof(char) * 7);
sprintf(dict[0], "mark");
sprintf(dict[1], "ala");
sprintf(dict[2], "wojtek");
sprintf(dict[3], "tom");
sprintf(dict[4], "john");
for (i = 0; i < 5; i++)
printf("Line #%d(length: %lu): %s\n", i, strlen(dict[i]),dict[i]);
return (dict);
}
void free_dictionary(char **dict)
{
for (int i = 0; i < 5; i++)
free(dict[i]);
free(dict);
}
void cmp(char *s1, char *s2[5])
{
int i = 0;
for (i = 0; i < 5; i++)
{
if (strcmp(s1, s2[i]) == 0)
printf("OK \n");
else
printf("sth is wrong \n");
}
}
int main()
{
char **dict = dictionary();
cmp("ala", dict);
free_dictionary(dict);
return (0);
}