Вызвать функцию через указатель - C (СИ)
Формулировка задачи:
Си
Сделать указатель на функцию. И вызвать функцию через указатель. Функция линейного поиска. Передаются в функцию параметры. Указатель с набором символов и символ, который будем искать. Набор символов и символ, который ищем заполняем с клавиатуры.Решение задачи: «Вызвать функцию через указатель»
textual
Листинг программы
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void (*func)(char*, char);
void linsearch(char* str, char ch)
{
for(int i = 0; i < strlen(str); ++i)
{
if(str[i] == ch)
{
printf("The char %c was found on the position %d in the given string.\n", ch, i);
return;
}
}
printf("The given string doesn't contain this char. Try again!\n");
}
int main(int argc, char** argv)
{
func = &linsearch;
func("Hallo World!", 'W');
return EXIT_SUCCESS;
}
Объяснение кода листинга программы
- Подключение необходимых библиотек для работы с файлами, строками и функциями.
- Объявление функции с именем linsearch с двумя параметрами типа char* и char.
- Объявление указателя на функцию с именем func, которая будет вызывать функцию linsearch.
- В функции linsearch происходит поиск символа в строке с помощью цикла for и условия if. Если символ найден, то выводится сообщение с позицией нахождения и функция возвращает управление. Если символ не найден, то выводится сообщение об отсутствии символа в строке.
- В функции main создается указатель на функцию linsearch и сохраняется в переменной func.
- Вызов функции func с двумя аргументами
Hallo World!и 'W'. - Возврат значения EXIT_SUCCESS из функции main, что означает успешное выполнение программы.