Передача параметров функции - C (СИ)
Формулировка задачи:
Не могу передать параметры из одной функции в другую
Предупреждения:
warning: passing argument 2 of 'strcat' makes pointer from integer without a cast
warning: assignment makes integer from pointer without a cast
warning: passing argument 4 of 'dopsearch' makes integer from pointer without a cast
char *search (char slova[][N], int sl, char res[])
{
int max=0,i;
char *w;
for(i=0;i<=sl;i++)
{
if (sravnenie(slova[i]) > max)
{
max = sravnenie(slova[i]);
w = slova[i];
}
}
dopsearch(max,sl,slova,w,res);
}
char *dopsearch (int max, int sl, char slova[][N], char w, char *res)
{
int i;
if (max>0)
{
for(i=0;i<=sl;i++)
{
if (sravnenie(slova[i]) == max)
{
w = slova[i];
strcat (res, " ");
strcat (res, w);
}
}
}
return res;
}Решение задачи: «Передача параметров функции»
textual
Листинг программы
char *dopsearch (int max, int sl, char slova[][N], char* w, char *res)
{
int i;
if (max>0)
{
for(i=0;i<=sl;i++)
{
if (sravnenie(slova[i]) == max)
{
strcpy(w,slova[i]);
strcat (res, " ");
strcat (res, w);
}
}
}
return res;
}
Объяснение кода листинга программы
- Входные параметры функции:
max- максимальное значение для поискаsl- количество слов в массивеslovaslova[][N]- двумерный массив слов для поискаw- временная переменная для хранения слова, если оно найденоres- результат поиска, строка, которая дополняется найденными словами
- Создаются три переменные:
i- счётчик в цикле- Если
maxбольше нуля, то начинается внутренний цикл - Внутренний цикл проходит по всем элементам массива
slova
- Проверка условия
sravnenie(slova[i]) == max- Если условие выполняется, то в переменную
wкопируется текущее слово из массиваslova - К строке
resдобавляется пробел, а затем словоwс помощью функцииstrcat
- Если условие выполняется, то в переменную
- После завершения внутреннего цикла возвращается результат поиска в переменной
res