Написать функцию, которая ищет в заданной строке последнее вхождение заданного символа - 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; }
Объяснение кода листинга программы
- В функции strrchr ищется последнее вхождение заданного символа в строке.
- Если строка пустая или пустая строка, функция возвращает NULL.
- В цикле просматривается каждый символ строки.
- Если найден заданный символ, функция возвращает указатель на этот символ в строке.
- Если заданный символ не найден, функция возвращает NULL.
- В функции main запрашивается строка и символ для поиска.
- Если строка пустая, выводится сообщение об ошибке и программа завершается.
- Если символ для поиска пустой, выводится сообщение об ошибке и программа завершается.
- Если заданный символ найден в строке, выводится сообщение об этом.
- Если заданный символ не найден в строке, выводится сообщение об этом.
- Цикл продолжается до тех пор, пока не будет введен символ новой строки.
- Введенная строка всегда завершается символом новой строки.
- Функция fgets считывает строку из стандартного ввода и записывает ее в буфер.
- Если ввод пустой, функция fgets возвращает NULL.
- Если введенный символ является символом новой строки, программа завершается.
- Если введенный символ является символом возврата каретки, программа завершается.
- Если введенный символ является символом перевода строки, программа завершается.
- Если введенный символ является символом табуляции, программа завершается.
- Если введенный символ является символом пробела, программа завершается.
- Если введенный символ является символом звездочки, программа завершается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д