Поиск буквы в слове - 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.
- Функция возвращает значение счетчика