Поиск буквы в слове - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Господа, добрый день. Провожу вот тренировки по передаче указателей на строку в функцию. Пытаюсь найти в заданной строке определенные символы. Но функция возвращает неверный результат..зараза такая... Проверил все уже сто раз и не могу найти ошибку. Ткнете носом в ошибку пожалуйста. Спасибо)
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define N 11\\ максимальное кол-во букв в функции
  4. int funk(char *str);\\прототип функции
  5.  
  6. int main(void)
  7. {
  8. char *A="oooanvv";\\Заданное слово
  9. int c;
  10. c=funk(A);\\скидываю указатель на строку в функцию
  11. printf("Otvet= %d", c);\\вывожу на экран результат работы функции
  12. return 0;
  13. }
  14. int funk(char *str)
  15. {
  16. int tmp=0;
  17. int i;
  18.  
  19. if (str==NULL)\\если строка пуста
  20. {
  21. return -1;
  22. }
  23. else
  24. {
  25. for(i=0; str[i]!='\0'; i++)
  26. {
  27. if (str[i]=='a' && str[i]=='n')\\поиск заданных символов в строке
  28. tmp++;\\при нахождении символа = счетчик++
  29. }
  30. return tmp;\\возврат кол ва найденных символов
  31. }
  32. }

Решение задачи: «Поиск буквы в слове»

textual
Листинг программы
  1. int Counter(char* pszStr)
  2. {
  3.    int   iCnt = 0;
  4.  
  5.    if (!pszStr || !*pszStr)
  6.    {
  7.       // Nothing to do
  8.       return -1;
  9.    }
  10.  
  11.    for (int ii = 0; pszStr[ii]; ++ii)
  12.    {
  13.       if (pszStr[ii] == 'a' || pszStr[ii] == 'n')
  14.       {
  15.          ++iCnt;
  16.       }
  17.    }
  18.  
  19.    return iCnt;
  20. }
  21.  
  22. int main(int argc,char** argv)
  23. {
  24.    char*    pszTest = "oooanvv";
  25.    
  26.    int   iRes = 0;
  27.  
  28.    iRes = Counter(pszTest);
  29.  
  30.    printf("Result: %d",iRes);
  31.  
  32.    return 0;
  33. }

Объяснение кода листинга программы

В данном коде реализована функция Counter, которая принимает в качестве аргумента указатель на строку символов pszStr и возвращает количество букв 'a' и 'n' в этой строке.

  1. Проверка входных данных:
    • Если pszStr или *pszStr равно NULL, то функция возвращает -1, так как нечего обрабатывать.
  2. Основной цикл функции:
    • Итерация по всем символам строки pszStr.
    • Если текущий символ равен 'a' или 'n', то увеличивается счетчик iCnt.
  3. Возврат результата:
    • Функция возвращает значение счетчика iCnt. В функции main создается строка oooanvv и вызывается функция Counter с этой строкой в качестве аргумента. Результат работы функции Counter выводится на экран с помощью функции printf.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4.6 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы