Написать функцию, которая ищет в строке 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; }
Объяснение кода листинга программы
- Включаем файл стандартного ввода/вывода
- Создаем функцию __strpbrk, которая принимает два аргумента: s - строка, в которой ищется символ, и accept - строка, символы которой нужно искать в s.
- Внутри функции объявляем две переменные i и j, которые будут использоваться в циклах.
- В первом цикле перебираем все символы строки s, используя символ под индексом i.
- Во втором цикле перебираем все символы строки accept, используя символ под индексом j.
- Если символы s[i] и accept[j] совпадают, то возвращаем указатель на символ в строке s, который совпадает с символом из строки accept.
- Если символы не совпадают, то продолжаем перебор символов.
- Если все символы из строки accept не найдены в строке s, то возвращаем NULL.
- В функции main создаем строки s и accept, которые будут использоваться в качестве аргументов для функции __strpbrk.
- Вызываем функцию __strpbrk, передавая ей в качестве аргументов строки s и accept.
- Полученный результат сохраняем в переменной p.
- Если p не равно NULL, то выводим сообщение о том, что найдено вхождение символа из строки accept в позиции s, иначе выводим сообщение о том, что вхождений не найдено.
- Возвращаем 0, чтобы указать, что программа успешно завершилась.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д