C - vérifier si la chaîne est une chaîne à une autre chaîne

J'ai besoin d'écrire un programme qui prend deux chaînes de caractères comme arguments et de vérifier si la seconde est une sous-chaîne de la première. J'ai besoin de le faire, sans utiliser de spécial les fonctions de la bibliothèque. J'ai créé cette application, mais je pense que c'est toujours de retourner true tant qu'il y a une lettre qui est la même dans les deux chaînes. Pouvez-vous m'aider ici. Je ne suis pas sûr de ce que je fais de mal:

#include <stdio.h>
#include <string.h>

int my_strstr( char const *s, char const *sub ) {
    char const *ret = sub;

    int r = 0;
    while ( ret = strchr( ret, *sub ) ) {
        if ( strcmp( ++ret, sub+1 ) == 0 ){
            r = 1;
        }
        else{
            r = 0;
        }        
    }
    return r;
}

int main(int argc, char **argv){

    if (argc != 3) {
        printf ("Usage: check <string one> <string two>\n");
    }
    int result = my_strstr(argv[1], argv[2]);

    if(result == 1){
        printf("%s is a substring of %s\n", argv[2], argv[1]);
    } else{
        printf("%s is not a substring of %s\n", argv[2], argv[1]);
    }
    return 0;
}
si vous devez le faire sans l'aide de toute spéciale les fonctions de la bibliothèque", alors vous ne devriez pas utiliser strchr et strcmp. en fait strcmp est où votre problème est de toute façon.
Ce sont juste des ordinaire des fonctions de la bibliothèque. Il n'y a rien de spécial en eux 🙂
si strchr() et strcmp() sont ordinaires, donc, est strstr()...
Leffler: Bien Sûr. J'ai été rappelé, en effet, que, en fait, il n'y a pas de "spécial" de la bibliothèque de fonctions - seulement les fonctions de la bibliothèque, de la période.

OriginalL'auteur user69514 | 2010-04-12