2010-05-11 3 views
2

J'essaie de vérifier si le deuxième argument de mon programme est une sous-chaîne du premier argument. Le problème est que cela ne fonctionne que si la sous-chaîne commence par la même lettre de la chaîne.Vérifier la sous-chaîne d'une chaîne

EDIT: Cela doit être fait en C, pas en C++.

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; 
} 
+0

Je suppose que c'est devoirs? –

+0

... spécifiquement, devoirs qui vous interdit d'utiliser toutes les fonctions de la bibliothèque en plus de 'at'? – Potatoswatter

+2

Lorsque vous passez des chaînes à des fonctions, utilisez 'const string &'. – Stephen

Répondre

1

Votre analyse du problème ("cela ne fonctionne que si la sous-chaîne commence par la même lettre de la chaîne") est incorrecte et vous recherchez donc le mauvais problème. Comme cela semble être des devoirs, je vais juste faire allusion au problème sous-jacent.

Alors qu'il échoue avec Michigan et igan il fonctionnera correctement avec Michigan et higan. Pourquoi cela fonctionne-t-il pour higan et non ? Quelle est la première lettre de igan? Qu'est-ce qui est différent à ce sujet quand il s'agit de Michigan?

1

Votre algorithme n'est pas correct.

Ce que vous voulez, ce sont des boucles imbriquées. Boucle sur la longueur de str, puis boucle sur la longueur de sub pour voir s'il y a une correspondance commençant à cette position.

2

Je suppose que je dois faire mes devoirs, donc: Jetez un oeil à ce que subStart est initialisé avec.

Questions connexes