Поиск буквы в слове - C (СИ)
Формулировка задачи:
Господа, добрый день.
Провожу вот тренировки по передаче указателей на строку в функцию. Пытаюсь найти в заданной строке определенные символы. Но функция возвращает неверный результат..зараза такая... Проверил все уже сто раз и не могу найти ошибку. Ткнете носом в ошибку пожалуйста.
Спасибо)
Листинг программы
- #include <stdio.h>
- #include <stdlib.h>
- #define N 11\\ максимальное кол-во букв в функции
- int funk(char *str);\\прототип функции
- int main(void)
- {
- char *A="oooanvv";\\Заданное слово
- int c;
- c=funk(A);\\скидываю указатель на строку в функцию
- printf("Otvet= %d", c);\\вывожу на экран результат работы функции
- return 0;
- }
- int funk(char *str)
- {
- int tmp=0;
- int i;
- if (str==NULL)\\если строка пуста
- {
- return -1;
- }
- else
- {
- for(i=0; str[i]!='\0'; i++)
- {
- if (str[i]=='a' && str[i]=='n')\\поиск заданных символов в строке
- tmp++;\\при нахождении символа = счетчик++
- }
- return tmp;\\возврат кол ва найденных символов
- }
- }
Решение задачи: «Поиск буквы в слове»
textual
Листинг программы
- int Counter(char* pszStr)
- {
- int iCnt = 0;
- if (!pszStr || !*pszStr)
- {
- // Nothing to do
- return -1;
- }
- for (int ii = 0; pszStr[ii]; ++ii)
- {
- if (pszStr[ii] == 'a' || pszStr[ii] == 'n')
- {
- ++iCnt;
- }
- }
- return iCnt;
- }
- int main(int argc,char** argv)
- {
- char* pszTest = "oooanvv";
- int iRes = 0;
- iRes = Counter(pszTest);
- printf("Result: %d",iRes);
- return 0;
- }
Объяснение кода листинга программы
В данном коде реализована функция Counter
, которая принимает в качестве аргумента указатель на строку символов pszStr
и возвращает количество букв 'a' и 'n' в этой строке.
- Проверка входных данных:
- Если
pszStr
или*pszStr
равно NULL, то функция возвращает -1, так как нечего обрабатывать.
- Если
- Основной цикл функции:
- Итерация по всем символам строки
pszStr
. - Если текущий символ равен 'a' или 'n', то увеличивается счетчик
iCnt
.
- Итерация по всем символам строки
- Возврат результата:
- Функция возвращает значение счетчика
iCnt
. В функцииmain
создается строкаoooanvv
и вызывается функцияCounter
с этой строкой в качестве аргумента. Результат работы функцииCounter
выводится на экран с помощью функцииprintf
.
- Функция возвращает значение счетчика
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д