Probleme programmation code source
red_azz
Messages postés
1
Statut
Membre
-
Pacorabanix Messages postés 4122 Date d'inscription Statut Membre Dernière intervention -
Pacorabanix Messages postés 4122 Date d'inscription Statut Membre Dernière intervention -
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);
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:
- Probleme programmation code source
- Code ascii - Guide
- Code puk bloqué - Guide
- Comment déverrouiller un téléphone quand on a oublié le code - Guide
- Code activation windows 10 - Guide
- Scanner qr code pc - Guide
1 réponse
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.
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.