Accueil > Forum > > > > boucle sans fin, ou autre...
boucle sans fin, ou autre...
mercredi 21 décembre 2005 à 11:56:48 |
boucle sans fin, ou autre...

dark_naruto25
|
Bonjour tout le monde, voilà je fais une fonction semblable à trim() en PHP. Seulement voilà, le programme reste planter au même endroit : printf("Suppression des caracteres blancs de fin de chaine.\n"); i=taille-1; while(i>0 && !isAlphaNum(chaine[i]) && !rechCar(caracteres,chaine[i],strlen(caracteres)) ) { chaine[i]='\0'; i--; } Le programme affiche le contenue de printf() et c'est tout, il s'arrête là. Et je ne vois pas pouquoi. svp aider moi... :'(
|
|
mercredi 21 décembre 2005 à 12:46:48 |
Re : boucle sans fin, ou autre...

vecchio56
|
Que valent taille, chaine, caractères...?
|
|
mercredi 21 décembre 2005 à 13:18:55 |
Re : boucle sans fin, ou autre...

dark_naruto25
|
taille c'est la paramètre passé à la fonction, je mets : sizeof(chaine)/sizeof(char), ce qui en théorie me retourne la taille du tableau de caractère y compris le '\0' de la fin. chaine c'est la chaine de caractères que je passe à la fonction, c'est cette chaine dont je dois enlevé les ' ' et '\ '. caracteres c'est une chaine contenant les caractères pouvant intervenir dans chaine et qu'il faut préserver.
|
|
mercredi 21 décembre 2005 à 13:25:36 |
Re : boucle sans fin, ou autre...

dark_naruto25
|
Non en fait j'ai trouvé où ça plantais, c'est dans la fonction rechCar(...);, y a une boucle sans fin dedans. Merci quand même de ton attention
|
|
mercredi 21 décembre 2005 à 14:29:48 |
Re : boucle sans fin, ou autre...

dark_naruto25
|
Donc voilà ma fonction trim(), il a des fonction à côté : bool isMaj() // retourne vrai si le caractère est une majuscule bool isMin() // retourne vrai si le caractère est une minuscule bool isNum() // retourne vrai si le caractère est un chiffre bool isAlphaNum() // regroupe l'ensemble des fonctions d'avant bool rechCar() // recherche le caractère dans la chaine caracteres void trim(char* chaine,int taille) { char *chaine2 = new char[taille]; memset(chaine2,0,sizeof(chaine2)); char caracteres[]="()[]',?.;:/\"-_%éèê#*&@|"; int i=0,j; while(i<taille && !isAlphaNum(chaine[i]) && !rechCar(caracteres,chaine[i],strlen(caracteres)) ) { printf("chaine[%d]='%c' (%d)\n",i,chaine[i],chaine[i]); chaine[i]='\0'; i++; } i=taille-1; while(i>=0 && !isAlphaNum(chaine[i]) && !rechCar(caracteres,chaine[i],strlen(caracteres)) ) { printf("%s\nchaine[%d]='%c' (%d)\n",chaine,i,chaine[i],chaine[i]); chaine[i]='\0'; i--; } i=0;j=0; while(i<taille && j<taille) { if( chaine[i]!='\0' ) chaine2[j] = chaine[i]; i++;j++; } memset(chaine,0,sizeof(chaine)); strcpy(chaine,chaine2); delete[] chaine2; } pour faire simple, la fonction ne marche pas :-)
|
|
mercredi 21 décembre 2005 à 14:49:37 |
Re : boucle sans fin, ou autre...

Joky
|
Réponse acceptée !
#include <stdio.h> #include <stdlib.h> #include <string.h> void SuppDevant(char *sz) { char Buff[128]; int Index = 0; char *c = sz; while(*c == ' ') { Index++; c++; } strcpy(Buff, sz+Index); strcpy(sz, Buff); } void SuppDerriere(char* sz) { char *d = sz + strlen(sz); d--; while(*d-- == ' ') *d = 0; } void Trim(char *sz) { SuppDevant(sz); SuppDerriere(sz); } int main(int argc, char *argv[]) { char Buff[] = " Salut les enfants "; Trim(Buff); printf("%s", Buff); system("PAUSE"); return 0; } if(!Meilleur("Joky")) return ERREUR;<
|
|
mercredi 21 décembre 2005 à 15:13:31 |
Re : boucle sans fin, ou autre...

dark_naruto25
|
OK, c'est le même principe que je voulais faire, ta boucle dans suppDevant est infie j'ai l'impression. JE vais essayer de mettre ça en oeuvre à ma sauce. merci Mais pourquoi tu vérifis si le caractère est vide ?
|
|
mercredi 21 décembre 2005 à 15:16:44 |
Re : boucle sans fin, ou autre...

Joky
|
c'est pas le caractère vide, c'est un espace Si le caractère est un espace, alors Index représente le nombre d'espace ensuite on copie dans Buff, tout sz sauf les Index premiers espaces Et pour les espaces derrière, on se place à la fin de la chaine, et on fé une marche arrière tant que c'est un espace, et alors on coupe *d = 0 Voila ;) if(!Meilleur("Joky")) return ERREUR;<
|
|
mercredi 21 décembre 2005 à 15:23:14 |
Re : boucle sans fin, ou autre...

Joky
|
Et non elle n'est pas infinie, parce que si le premier caractère n'est pas un espace, il ne rentre pas dans la boucle, et donc Index = 0, donc il y a bien 0 espace devant ;) if(!Meilleur("Joky")) return ERREUR;<
|
|
mercredi 21 décembre 2005 à 15:24:48 |
Re : boucle sans fin, ou autre...

vecchio56
|
while(*d-- == ' ') *d = 0;
Ca sert a rien de mettre des zeros partout, seul le dernier est important while(*d-- == ' '); *d = 0;
Les deux strcpy dans SuppDevant sont pas très efficaces. Il suffit en fait d'avoir le décalage (nombre d'espaces) et de faire while(*(sz + dec)) { *sz = *(sz + dec); sz++; } *sz = 0;
|
|
Cette discussion est classée dans : fin, boucle, voil, chaine, caracteres
Répondre à ce message
Sujets en rapport avec ce message
Chaine de caracteres !!! [ par mantalotus ]
Comment puis-je transformer un chaine de caractères en une chaine de bits et inversement.Merci de votre aide.
Pb de reallocation d'un tableau de chaine de caracteres [ par kobee12 ]
J'ai un petit probleme. En effet j'ai un tableau defini de la maniere suivante : char* tab[12];Je charge des chaines de caracteres dans mon tableau. E
PB de gestion de fichier!!!! [ par kobee12 ]
J'ai un probleme avec la boucle qui se trouve en dessous ( do ... while(!feof(fichier)) ).quand on arrive a la fin du fichier il fait une erreur. il n
Chaine de caracteres [ par youssef22 ]
Bonjour,Je suis entrain d'ecrire un petit programme qui genere a chaque fois un mot, et affiche le mot sous forme de tirets, et demande a l'utilisateu
Chaine de caracteres [ par LordBob ]
Salut a tous,voila j'ai une question seulement, je ne sais pas trop comment la poser ou plutot l'expliquer... Alors, je vais faire comme je peux... al
Troncature à l'unité ou selection de caracteres dans une chaine [ par zelze ]
Voila mon problème:Je débute a peine au C++ et j'ai déjà un problème, j'ai besoin de faire la troncature a l'unité d'un nombre, pouvez vous m'aider?Ou
Envoyer une chaine de caracteres a une autre appli [ par fredcpp ]
Bonjour,Je cherche a envoyer une chaine de caractere depuis mon programme vers une appli windows ( notepad par exemple ).Tout ca de facon a ce que l'a
Chaine de caracteres aléatoire [ par winwarrior ]
Bon voila je voudrai simplement que ce code retourne une chaine de caracteres aléatoire je comprend pas ce qui cloche nlors de la compilation ça me ma
Pb avec fonction retournant chaine de caractères [ par dragon3x6 ]
Bonjour,peut - on retourner une chaine de caracteres avec une fonction ?j'ai ecris une fonction qui renvoie une chaine de caracteres du type 'char cha
copier nombre dans chaine de caracteres?? [ par dletozeun ]
bonjour,Je cherche une fonction capable de copier un entier dans une chaine de caracteres et une autre fonction capable de transformer une chaine de c
Livres en rapport
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|