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

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

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

Написать функцию, которая ищет в строке s1 любой символ из строки s2 (char *strpbrk(char *s1, char *s2). Сам пробовал, ответ не правильно выдает((( Помагите пожалуйста) вот:
#include<stdio.h>
char *strpbrk(char *s1, char *s2)
{char *rs;
rs=s1;  s1--;
 while(*s1!='\0')
{s1++;
while(*s2!='\0')
 {if(*s1!=*s2)
  *rs=' ';
  rs++;
  s2++;
 }}
*s1='\0';
*rs='\0';
 puts(rs);
 return rs;
 }
 
 main()
 {char str1[30], str2[30];
 puts("Vvedite 2 stroki");
 gets(str1);
 gets(str2);
 if(strlen(str1)+strlen(str2)<30)
 {puts(strpbrk(str1,str2));
 puts("simvoli iz stroki s1");
  puts(str1);
 }
 else puts("simvolov net") ;
 }

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

textual
Листинг программы
#include <stdio.h>
 
char *
__strpbrk(const char *s, const char *accept)
{
    int i, j;
    for(i = 0; s[i] != '\0'; i++)
        for(j = 0; accept[j] != '\0'; j++)
            if(s[i] == accept[j])
                return (char *) s + i;
    return NULL;
}
 
int
main(void)
{
    char s[] = "hello, world!";
    char accept[] = "abcde";
    char *p = __strpbrk(s, accept);
 
    if(p != NULL) {
        printf("Найдено вхождение %c в позиции %d\n", *p, p - s + 1);
    } else {
        printf("Вхождений не найдено.\n");
    }
    return 0;
}

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

  1. Включаем файл стандартного ввода/вывода
  2. Создаем функцию __strpbrk, которая принимает два аргумента: s - строка, в которой ищется символ, и accept - строка, символы которой нужно искать в s.
  3. Внутри функции объявляем две переменные i и j, которые будут использоваться в циклах.
  4. В первом цикле перебираем все символы строки s, используя символ под индексом i.
  5. Во втором цикле перебираем все символы строки accept, используя символ под индексом j.
  6. Если символы s[i] и accept[j] совпадают, то возвращаем указатель на символ в строке s, который совпадает с символом из строки accept.
  7. Если символы не совпадают, то продолжаем перебор символов.
  8. Если все символы из строки accept не найдены в строке s, то возвращаем NULL.
  9. В функции main создаем строки s и accept, которые будут использоваться в качестве аргументов для функции __strpbrk.
  10. Вызываем функцию __strpbrk, передавая ей в качестве аргументов строки s и accept.
  11. Полученный результат сохраняем в переменной p.
  12. Если p не равно NULL, то выводим сообщение о том, что найдено вхождение символа из строки accept в позиции s, иначе выводим сообщение о том, что вхождений не найдено.
  13. Возвращаем 0, чтобы указать, что программа успешно завершилась.

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


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

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

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