[C] probleme avec la fonction de suppression
Fermé
stroumpf
Messages postés
289
Date d'inscription
mardi 17 juin 2008
Statut
Membre
Dernière intervention
1 mars 2009
-
18 juil. 2008 à 12:35
stroumpf Messages postés 289 Date d'inscription mardi 17 juin 2008 Statut Membre Dernière intervention 1 mars 2009 - 18 juil. 2008 à 15:46
stroumpf Messages postés 289 Date d'inscription mardi 17 juin 2008 Statut Membre Dernière intervention 1 mars 2009 - 18 juil. 2008 à 15:46
A voir également:
- [C] probleme avec la fonction de suppression
- Forcer la suppression d'un fichier - Guide
- Fonction si et - Guide
- Suppression page word - Guide
- Fonction moyenne excel - Guide
- Suppression cookies - Guide
5 réponses
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
18 juil. 2008 à 14:25
18 juil. 2008 à 14:25
Salut.
Je ne comprends vraiment pas pourquoi il y a un souci, je ne voi aucune erreur...
La seul est peut ^^etre que chaine n'a pas de caractère '\0' et que strlen renvoie n'importe quoi
Je ne comprends vraiment pas pourquoi il y a un souci, je ne voi aucune erreur...
La seul est peut ^^etre que chaine n'a pas de caractère '\0' et que strlen renvoie n'importe quoi
cchristian
Messages postés
921
Date d'inscription
lundi 21 janvier 2008
Statut
Membre
Dernière intervention
6 mars 2012
131
18 juil. 2008 à 14:12
18 juil. 2008 à 14:12
Bonjour,
Tu peux préciser davantage car je viens de tester ta proc et je n'ai pas eu de problème !
Tu peux préciser davantage car je viens de tester ta proc et je n'ai pas eu de problème !
stroumpf
Messages postés
289
Date d'inscription
mardi 17 juin 2008
Statut
Membre
Dernière intervention
1 mars 2009
2
18 juil. 2008 à 14:17
18 juil. 2008 à 14:17
merci cchristian,
jai un probleme dans toute cette fonction: elle se plante
jai un probleme dans toute cette fonction: elle se plante
void GenNseq(Liste *seq) {int i; char *mot; Liste *p; Liste *q; Liste *chaine=NULL; char *moRes; char *moRes1; Liste ** tab; char *pointeur; char* copi; char *separateur = { " " }; char *buff; tab = (Liste **) malloc (20 * sizeof(Liste *)); tab [0]=seq; buff =tab[0]->mot; printf ("%s", tab[0]->mot); //test sur les element des 2seq sil ya une jointure printf("voila la 3sequence"); for(p=seq;p!=NULL;p=p->suivant){ for (q=seq->suivant;q!=NULL;q=q->suivant){ if (strcmp(dernier(p->mot),premier(q->mot) )==0) moRes=enlever_dernier_mot(p->mot); //moRes1=strcat(moRes, q->mot); // chaine=InsertionEnTete(chaine, p->mot); } } printf("%s", chaine->mot); //printf("%s", chaine->mot) //printf("voila la liste jointe"); //AfficherListe(chaine); }
mamiemando
Messages postés
33410
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
2 décembre 2024
7 808
18 juil. 2008 à 14:17
18 juil. 2008 à 14:17
#include <string.h> #include <stdio.h> #include <stdlib.h> #include <ctype.h> void supprimer_dernier_mot(const char *str,char *str2){ const unsigned n = strlen(str); unsigned i; for(i=0;i<n;++i){ if(isspace(str[n-i])){ str2 = strncpy(str2,str,n-i); return; } } str2 = ""; } int main(){ const char *str="j'aime les tapirs"; char *str2 = (char *)malloc(strlen(str)*sizeof(char)); supprimer_dernier_mot(str,str2); printf("str = [%s]\nstr2 = [%s]\n",str,str2); free(str2); return 0; }
Bonne chance
stroumpf
Messages postés
289
Date d'inscription
mardi 17 juin 2008
Statut
Membre
Dernière intervention
1 mars 2009
2
18 juil. 2008 à 14:21
18 juil. 2008 à 14:21
merci Mamiemando,
faut qu'elle retourne la chaine moin le dernier mot:
faut qu'elle retourne la chaine moin le dernier mot:
stroumpf
Messages postés
289
Date d'inscription
mardi 17 juin 2008
Statut
Membre
Dernière intervention
1 mars 2009
2
18 juil. 2008 à 14:44
18 juil. 2008 à 14:44
ca devient plus compliqué :)
elle me retourne pas la nouvelle chaine, deja le type de retour est void
elle me retourne pas la nouvelle chaine, deja le type de retour est void
mamiemando
Messages postés
33410
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
2 décembre 2024
7 808
18 juil. 2008 à 14:29
18 juil. 2008 à 14:29
Oui et bien c'est le cas :
(mando@silk) (~) $ gcc -W -Wall plop.c (mando@silk) (~) $ ./a.out str = [j'aime les tapirs] str2 = [j'aime les]
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 842
18 juil. 2008 à 15:20
18 juil. 2008 à 15:20
Salut
J'ai essayé de respecter ta fonction. C'est-à-dire, de renvoyer un char* et de modifier la chaine que tu lui envoies.
Ceci donne :
Cdt
J'ai essayé de respecter ta fonction. C'est-à-dire, de renvoyer un char* et de modifier la chaine que tu lui envoies.
Ceci donne :
#include <stdio.h> #include <string.h> char * supprimerMot(char *buf){ int i; for(i=strlen(buf)-1;i>=0;i--) if(buf[i]==' '){ buf[i]='\0'; return buf; } return buf; } int main(void){ char chaine[]="j'aime les tapirs"; char *res=supprimerMot(chaine); printf("chaine=%s\nres=%s\n",chaine,res); return 0; }
Cdt
stroumpf
Messages postés
289
Date d'inscription
mardi 17 juin 2008
Statut
Membre
Dernière intervention
1 mars 2009
2
18 juil. 2008 à 15:25
18 juil. 2008 à 15:25
merci Fiddy
J'ai un probleme avec une fonction (je code en C)
cette fonction pren en entrée une liste chainée qui contient des couples de mots (exemple: "bonjour le", "le monde", "le garçon").
cette fonction parcour cette liste chainée afin de produire une nouvelle liste de triple de mots (exemple "bonjour le monde") selon une condition (si le dernier mot de la liste égal au premier) ici, on a par exemple ("bonjour le" et "le monde"): pour produire une nouvelle sequence "bonjour le monde" .
là ya pas d'erreurs mais un message s'affiche " projet2.exe a céssé de fonctionné"
merci d'avance
void GenNseq(Liste *seq) {int i; char *mot; Liste *p; Liste *q; Liste *chaine=NULL; char *moRes; char *moRes1; Liste ** tab; char *pointeur; char* copi; char *separateur = { " " }; char *buff; tab = (Liste **) malloc (20 * sizeof(Liste *)); tab [0]=seq; buff =tab[0]->mot; printf ("%s", tab[0]->mot); //test sur les element des 2seq sil ya une jointure printf("voila la 3sequence"); for(p=seq;p!=NULL;p=p->suivant){ for (q=seq->suivant;q!=NULL;q=q->suivant){ if (strcmp(dernier(p->mot),premier(q->mot) )==0) moRes=(char *)malloc(strlen(p->mot)*sizeof(char)); strcpy(moRes,p->mot); moRes=enlever_dernier_mot(p->mot); free(moRes); //moRes1=strcat(moRes, q->mot); // chaine=InsertionEnTete(chaine, p->mot); } } printf("%s", chaine->mot); //printf("%s", chaine->mot); //printf("voila la liste jointe"); //AfficherListe(chaine); }
J'ai un probleme avec une fonction (je code en C)
cette fonction pren en entrée une liste chainée qui contient des couples de mots (exemple: "bonjour le", "le monde", "le garçon").
cette fonction parcour cette liste chainée afin de produire une nouvelle liste de triple de mots (exemple "bonjour le monde") selon une condition (si le dernier mot de la liste égal au premier) ici, on a par exemple ("bonjour le" et "le monde"): pour produire une nouvelle sequence "bonjour le monde" .
là ya pas d'erreurs mais un message s'affiche " projet2.exe a céssé de fonctionné"
merci d'avance
stroumpf
Messages postés
289
Date d'inscription
mardi 17 juin 2008
Statut
Membre
Dernière intervention
1 mars 2009
2
18 juil. 2008 à 15:46
18 juil. 2008 à 15:46
Je pense que le probleme est dans les 2 boucles !!!
bizarre merci
bizarre merci