Функция поиск символа в строке - C (СИ)
Формулировка задачи:
Помогите написать функцию
char* findChar(const char *str, char c);
которая ищет в строке str указанный символ c и возвращает указатель
на его первое вхождение. В случае если символ не найден, должен быть
возвращён указатель на конец строки. Функция не должна выходить за
пределы строки
Решение задачи: «Функция поиск символа в строке»
textual
Листинг программы
#include <assert.h>
char* find_char(const char* str, char c)
{
for( ; *str; ++str ) {
if( *str == c ) break;
}
return (char*)str;
}
int main(void)
{
char string[] = "abc";
assert( find_char(string, 'a') == string );
assert( find_char(string, 'b') == string + 1 );
assert( find_char(string, 'c') == string + 2 );
assert( find_char(string, 'd') == string + 3 );
assert( find_char(string, 'e') == string + 3 );
return 0;
}
Объяснение кода листинга программы
- Включаем заголовочный файл assert.h, который содержит прототипы функций assert и assert_message, а также определяет макрос ASSERT.
- Определяем функцию find_char, которая принимает два аргумента: const char* str — указатель на начало строки, в которой необходимо осуществить поиск, и char c — символ, который необходимо найти в строке.
- В функции find_char осуществляется цикл for, который начинается с указателя на первый символ строки и продолжается до тех пор, пока не встретится символ '\0'.
- Внутри цикла проверяется условие *str == c, если оно истинно, то цикл прерывается с помощью оператора break.
- Если цикл завершается без прерывания, то возвращается указатель на последний символ строки.
- В функции main создается массив символов
abcс помощью оператора символьного литерала. - С помощью функции assert проверяется, что после вызова функции find_char для поиска символа 'a' возвращается указатель на первый символ строки
abc. - Аналогично проверяется, что после вызова функции find_char для поиска символа 'b' возвращается указатель на второй символ строки
abc. - Аналогично проверяется, что после вызова функции find_char для поиска символа 'c' возвращается указатель на третий символ строки
abc. - Аналогично проверяется, что после вызова функции find_char для поиска символа 'd' возвращается указатель на четвертый символ строки
abc. - Аналогично проверяется, что после вызова функции find_char для поиска символа 'e' возвращается указатель на четвертый символ строки
abc. - Функция main завершается возвратом значения 0, что означает успешный конец работы программы.