Поиск буквы в слове - 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' в этой строке.

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

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


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

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

5   голосов , оценка 4.6 из 5
Похожие ответы