Функция должна находить первое вхождение в строку заданной подстроки — C++(Си)

#include <stdio.h>
 
/* возвращает указатель на первое вхождение строки b в строку a или NULL */
char *mystrstr(const char *a, const char *b){
    const char *pa, *pb;
 
    if ( !a || !b )
        return NULL;
    for ( ; *a; ++a ){
        for ( pa = a, pb = b; *pa && *pa == *pb; ++pa, ++pb )
            ;
        if ( !*pb )
            return (char*)a;
    }
    return NULL;
}
 
size_t mystrlen(const char *s){
    const char *p;
    if ( !s )
        return 0;
    for ( p = s; *p; ++p )
        ;
    return p - s;
}
 
int main(void){
    char s1[BUFSIZ], s2[BUFSIZ], *p;
 
    while ( 1 ){
        printf("String 1: ");
        if ( !fgets(s1, BUFSIZ, stdin) )
            return 1;
        s1[mystrlen(s1) - 1] = '\0';
        if ( !*s1 )
            break;
        printf("String 2: ");
        if ( !fgets(s2, BUFSIZ, stdin) )
            return 1;
        s2[mystrlen(s2) - 1] = '\0';
        if ( !*s2 )
            break;
 
        printf("String 1 %scontain string 2.\n", ( mystrstr(s1, s2)) ? "" : "don't ");
    }
 
    return 0;
}

Leave a Comment