Написать функцию, которая ищет в заданной строке последнее вхождение заданного символа - C (СИ)

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

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

программа не работает помогите пожалуйста Вот сама задача: Написать функцию, которая ищет в заданной строке последнее вхождение заданного символа (char *strrchr(char *s, char c). Мое решение:
#include<stdio.h>
#include<conio.h>
  char *strrchr(char*s,char c)
  {char *rs;
 
  while(*s!='\0')
    {if(*s==c)
  rs=s ;s++;
  }
 
  return rs;
  }
  main()
  {char str[80],c;
  puts("vvedite stroku u simvol");
  gets(str);
  scanf("%c",&c);
  {puts(strrchr(str,c));
  puts(str);
  }}

Решение задачи: «Написать функцию, которая ищет в заданной строке последнее вхождение заданного символа»

textual
Листинг программы
#include <stdio.h>
 
char *strrchr(const char *s, int c){
    const char *p;
    
    if ( !s || !*s || !c )
        return NULL;
    
    for ( p = s; *p; p++ )
        ;
    for ( p -= 1; p >= s; p-- )
        if ( *p == (unsigned char)c )
            return (char*)p;
    return NULL;
}
 
int main(void){
    char buf[BUFSIZ], *p;
    int c;
    
    while ( 1 ){
        printf("String: ");
        if ( !fgets(buf, BUFSIZ, stdin) )
            return 1;
        if ( *buf == '\n' )
            break;
        if ( p = strrchr(buf, '\n') )
            *p = '\0';
        printf("Char: ");
        c = getchar();
        getchar();
        if ( p = strrchr(buf, c) )
            printf("Tail of string: %s\n", p);
        else
            printf("Can't find %c in string %s\n", (unsigned char)c, buf);
    }
    
    return 0;
}

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

  1. В функции strrchr ищется последнее вхождение заданного символа в строке.
  2. Если строка пустая или пустая строка, функция возвращает NULL.
  3. В цикле просматривается каждый символ строки.
  4. Если найден заданный символ, функция возвращает указатель на этот символ в строке.
  5. Если заданный символ не найден, функция возвращает NULL.
  6. В функции main запрашивается строка и символ для поиска.
  7. Если строка пустая, выводится сообщение об ошибке и программа завершается.
  8. Если символ для поиска пустой, выводится сообщение об ошибке и программа завершается.
  9. Если заданный символ найден в строке, выводится сообщение об этом.
  10. Если заданный символ не найден в строке, выводится сообщение об этом.
  11. Цикл продолжается до тех пор, пока не будет введен символ новой строки.
  12. Введенная строка всегда завершается символом новой строки.
  13. Функция fgets считывает строку из стандартного ввода и записывает ее в буфер.
  14. Если ввод пустой, функция fgets возвращает NULL.
  15. Если введенный символ является символом новой строки, программа завершается.
  16. Если введенный символ является символом возврата каретки, программа завершается.
  17. Если введенный символ является символом перевода строки, программа завершается.
  18. Если введенный символ является символом табуляции, программа завершается.
  19. Если введенный символ является символом пробела, программа завершается.
  20. Если введенный символ является символом звездочки, программа завершается.

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


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

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

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