Probleme programmation code source

Fermé
red_azz Messages postés 1 Date d'inscription jeudi 4 février 2010 Statut Membre Dernière intervention 4 février 2010 - 4 févr. 2010 à 03:29
Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 - 4 févr. 2010 à 05:54
Bonjour à tous et merci d'avance pour vos réponses,
je suis nouveau dans la programmation et je commence par apprendre le langage c.
j'ai un petit problème(qui fera sourire un bon nombre de programmateur :-) ) sur un TP que je n'arrive pas à résoudre.donc voila le problème j'essaye de créer une fonction qui reproduit la fonction strstr de la bibliothèque <string.h>; j'ai réussi a la reproduire mais il se trouve que ma fonction ne prend pas en compte, dans la recherche, le premier caractère lorsque que j'envoi en paramètre d'entrée les caractère à rechercher.
je pense que sa doit venir de l'incrémentation!!!! Mais bon j'ai beau cherché je ne trouve pas la solution.
je vous envoi le code source sûrement que vous y verrez plus clair que moi !!!
Merci d'avance encore une fois pour vos réponses j'aimerai savoir mon erreur car c'est comme ça qu'on progresse!!!!!!

fonction main.c :

int main(int argc, char *argv[])
{
char *chainecaractere = NULL;
chainecaractere = rechercheliste("salut tout le monde", "sqm");
printf("%s",chainecaractere);
return 0;
}

_______________________________________


fonction.c :

char* rechercheliste(const char *chaine, const char *lettrearechercher)
{
int a = 0,i = 0, c = 0;
static char nouvellechaine[100];
do
{
while(lettrearechercher[i] != '\0' && lettrearechercher[i] != chaine[a])
{
i++;
if(lettrearechercher[i] == chaine[a])
{
do
{
nouvellechaine[c] = chaine[a];
c++;
a++;
}
while(chaine[a] != '\0');
}
}
a++;
i = 0;
}
while(chaine[a] != '\0' && chaine[a] != lettrearechercher[i]);
return nouvellechaine;
}


_________________________________________________

prototype :

char* rechercheliste(const char *chaine, const char *lettrearechercher);
A voir également:

1 réponse

Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 661
4 févr. 2010 à 05:54
essaye de faire "tourner" ton algorithme avec un papier et un crayon, avec une chaine qui pose le problème que tu décris.

Tu verras que tu ne rentres, il me semble, dans aucune boucle de ta fonction.
A toi de rajouter ce cas spécial à part par exemple.

D'autre part utilse les balises code (bouton dans la création de message à droite de souligné) car ainsi les espacement d'indentation seront préservés, pour la lecture ça aide (avec toutes ces boucles while... :) )

d'autre part, il faut faire attention avec les chaines en c. Toute chaine doit se terminer par le caractère '\0', j'ai l'impression que la conception de ton programme fait que "nouvelleChaine" n'a jamais de '\0' écrit dedans.
0