Effacer les espaces

Signaler
Messages postés
24
Date d'inscription
dimanche 17 juin 2001
Statut
Membre
Dernière intervention
3 octobre 2006
-
Messages postés
326
Date d'inscription
vendredi 13 août 2004
Statut
Membre
Dernière intervention
2 novembre 2007
-
Bonsoir !

Je store une chaine de charactère dans un array[]="blah blah" et je voudrais savoir comment en effacer les espaces (ou tout autres caractères). La manière qui me semble la plus simple serait de faire un loop à travers chaque charactère de l'array array[0] à array[n] mais je ne sais pas comme trouver l'id de la dernière position de l'array ni comment effacer si c'est un espace, quelqu'un pourrait me donner un coup de main stp ?

Merci !
- Alex

4 réponses

Messages postés
326
Date d'inscription
vendredi 13 août 2004
Statut
Membre
Dernière intervention
2 novembre 2007
2
taille de la chaine : strlen(array) (ne compte pas le '\0'), donc pour "blah blah" strlen(...)=9.

int compteurEspace=0;
char *result;
char *resultIter;
// on compte le nombre d'espace por l'allocation de la nouvelle chaine
for(int i=0;i<strlen(array);i++)
{
if(array[i]==' ') compteurEspace++;
}

if(compteurEspace==0)
{
result=array;
// là c'est toi qui voit...
}
else
{
// +1 pour le '\0'
result=(char*)malloc(strlen(array)-compteurEspace+1);
resultIter=result;
for(int j=0;j<strlen(array);j++)
{
if(array[j]!=' ')
{
*resultIter=array[j];
resultIter++;
}
}
}

@+, KeniiyK
Messages postés
326
Date d'inscription
vendredi 13 août 2004
Statut
Membre
Dernière intervention
2 novembre 2007
2
Et voila, je l'ai oublié
il faut ajouter *resultIter='\0'; en sortie du dernier FOR.

KeniiyK
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
27
KeniiyK > excuse mais c'est vraiment très mauvais (on dirait du VB), tu parcours la chaine une multitude de fois.

en 1 seul parcours et refaite sur place:
char *c; *d;c d array;
while(*c) { if(*c !32) *d++ *c; // SI != ESPACE
c++;
}
*d = 0; // TERMINE LA CHAINE

ciao...
http://dev.winsysdev.com
BruNews, MVP VC++
Messages postés
326
Date d'inscription
vendredi 13 août 2004
Statut
Membre
Dernière intervention
2 novembre 2007
2
Je suis d'accord mais je ne sais quel est l'utilisation de la chaine ensuite ou s'il ne faut pas toucher à la première, etc.... On ne sait pas si c'est du C ou CPP.
Bref, j'ai donné ce code vite fait pour lui trouvé une solution.

Maintenant à lui de prendre celle qui lui convient le mieux.