Extraire une chaine de caractère en retirant les espaces... [Résolu]

Signaler
Messages postés
23
Date d'inscription
mardi 20 avril 2004
Statut
Membre
Dernière intervention
16 octobre 2008
-
Messages postés
23
Date d'inscription
mardi 20 avril 2004
Statut
Membre
Dernière intervention
16 octobre 2008
-
Bonsoir,
Je pose ici une question qui doit paraître évident pour la plupart d'entre vous mais enfin... voici le programme de base:
_______________________________________________
#include
#include <conio.h>

int main()
{
int counter = 0;

char * str = new char;
char * str2 = new char;
str= "Rigolons... ";
while(counter != 15)
{
if(str[counter] != ' ')
str2[counter] = str[counter];
counter++;
}
str2[counter+1] = '\0';
cout<<"counter: "<<counter<<endl;
cout<<"String 1: "<<str<<"."<<endl; // Test str avec espace
cout<<"String 2: "<<str2<<"."<<endl; // Test le résultat désiré doit-être str sans espace
getch();

return 0;
}
________________________________________________
Malheureusement ce code "plante" sous VC++ c'est pourquoi je demande votre aide et aussi savoir s'il y avait des manières plus élégente avec d'autre bibliothèque...

Fituza

3 réponses

Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
25
void cpySansEspaces(char *dst, char *src)
{ char *c src, *d dst;
while(*c) { if(*c !' ') *d++ *c;
c++;
}
*d = 0; // TERMINATEUR NULL OBLIGATOIRE
}

ciao...
BruNews, MVP VC++
Messages postés
1536
Date d'inscription
samedi 21 décembre 2002
Statut
Membre
Dernière intervention
24 mai 2009
2
Je n'utilise pas new, mais a vu de nez, ya un pb d'allocation :

char * str = new char;
char * str2 = new char;

Tu alloues si jme trompe, 1char (== 1octet), tu ne peux donc pas parcourir ta chaine, puis ce kil ny en a tout simplement pas !
Alloue la taille kil te faut.

Et n'oublie pas les delete a la fin !

+2(p - n)
Messages postés
23
Date d'inscription
mardi 20 avril 2004
Statut
Membre
Dernière intervention
16 octobre 2008

Ca marche super sur les deux compilateurs.
Je n'aurai qu'un mot à dire... Merci :).




Fituza