begin process at 2012 05 30 04:29:05
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Algorithme

 > 

Maths

 > 

Supprimer les espaces dans une chaine de caractères


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Supprimer les espaces dans une chaine de caractères

lundi 16 mars 2009 à 16:00:44 | Supprimer les espaces dans une chaine de caractères

marthymbiz

Salut,
Je débute en programmation C et j'utilise Borland C++ comme compilateur.
je voudrais créer un programme C permettant de supprimer les espaces contenus dans une chaine de caractères :
voici mon code :
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void suprEspace(char expr);
void main()
{char expr[255];
 printf("Donnez l'expression : ");
 gets(expr);
 suprEspace(expr);
 puts(expr);
}

void suprEspace(char expr)
{int i,j,n;
n=strlen(*expr);
for (i=0;i>n;i++)
  if (*expr[i]==' ')
                   {
                    for(j=i;j>(n-1);j++)
                     *expr[j]=*expr[j+1];
                   }
}


lors de la compilation borland m'affiche que j'ai 7 erreurs qui sont surement dus a une mauvaises manipulation des pointeurs et des chaines de caractères alors si quelqu'un peut me proposer une solution ça serai vraiment très cool
merci d'avance
lundi 16 mars 2009 à 16:46:33 | Re : Supprimer les espaces dans une chaine de caractères

Pistol_Pete

Réponse acceptée !
Salut
Effectivement les pointeurs sont à revoir.

void suprEspace(char *expr, char *res)
{
  char *P=expr,*Q=res;
  while(*P!='\0'){
    if(*P!=' '){
      *Q=*P;
      Q++;
    }
    P++;
  }
  *Q=0;
}

A+

____________________________________________________________________________
Mon site internet :
  
[ Lien ]

lundi 16 mars 2009 à 16:50:59 | Re : Supprimer les espaces dans une chaine de caractères

fregolo52

Membre Club
Réponse acceptée !

Salut,

La petite erreur du débutant avec les pointeurs !!
void suprEspace(char expr); // là tu passes 1 caractère
void suprEspace(char *expr); // là tu passes l'adresse d'un tableau de caractères (version correcte)

char expr[255]; // expr est l'adresse du 1er element de ton tableau

suprEspace(expr); // est correcte

lundi 16 mars 2009 à 19:03:15 | Re : Supprimer les espaces dans une chaine de caractères

marthymbiz

Salut merci pour vos réponses
voici mon code après modifications:
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void suprEspace(char *expr);
void main()
{char expr[255];
 printf("Donnez l'expression : ");
 gets(expr);
 suprEspace(expr);
 puts(expr);
 getch();
}

void suprEspace(char *expr)
{int i,j,n;
n=strlen(expr);
for (i=0;i<n;i++)
  if (expr[i]==' ')
                   {
                    for(j=i;j<(n-1);j++)
                     expr[j]=expr[j+1];
                   }
}

 la compilation n'affiche aucune erreur mais il existe encore un problème : les expaces sont bien supprimés mais le nombre d'espaces introduits est remplacé a la fin de la chaine de caractères avec des valeurs aléatoires
c'est à dire:
si par exemple j'entre la chaine "code source"
le programme me retourne "codesourcee" le dernier 'e' est la valeur aléatoire dont je vous ai parlé.
lundi 16 mars 2009 à 19:12:16 | Re : Supprimer les espaces dans une chaine de caractères

Pistol_Pete

Il faut faire attention au zéro terminal. Tu le places ou tu veux et il symbolise la fin de chaine.
A+

____________________________________________________________________________
Mon site internet :
  
[ Lien ]

lundi 16 mars 2009 à 22:13:26 | Re : Supprimer les espaces dans une chaine de caractères

marthymbiz

Réponse acceptée !
En effet dans la derniere boucle de la fonction suprEspaces il fallait mettre (j=i;j<n;j++) et non (j=i;j<(n-1);j++)
sinon le zéro terminal ne subira pas de décalage d'ou l'apparition des valeures aléatoires.
Encore merci.


Cette discussion est classée dans : supprimer, espaces, include, caractères, expr


Répondre à ce message

Sujets en rapport avec ce message

Supprimer les espaces dans une chaine [ par ticalimero ] Je sais, ca parait tout simple...mais je vais mettre unteps fou à le faire alors si vous pouviez m'aider svp !Je veux supprimer tous les espaces d'une combler les blancs [ par berry007 ] bonjour tous le monde, dans le cadre de mon programme scolaire on me demande de remplacer les espaces dans une chaines de caractéres par un caractéres Pb Chaîne de caractères [ par mmuller57 ] Bonjour,J'ai créé un petit programme qui convertit les caractères d'une chaîne de caractères par leurs codes ASCII :#include #include #include int con Supprimer les espaces dans un fichier texte!!! [ par salley ] Voila j'ai un fichier texte avec plein de chiffres et entre chaque chiffre 5 espaces, j'aimerais le modifier :1/ J'aimerais enlever les 50 premiers ca [C] générer caractères aléatoires [ par Zestyr ] Bonjour, Je voudrais créer une fonction qui génère des caractères aléatoires avec un délai de 1ms max, si c'est possible moins ! Voila mon code [cod supprimer un variable [ par Nagalta ] Bonjour je suis débutant en c++J'ai visiblement un probleme de memory leak dans mon programme.visiblement cela vient du fait que je reatribut des vale Recherche librairies [ par diamond_dog ] Bonjour, je recherche les librairies suivantes, merci d'avance: #include #include #include #include #include &lt Deboguer un code [ par ptit programeur ] bonjours je voudrais savoir pourquoi ce code est faux#include #include using namespace std; int main(int argc, char *argv[]){  long triple (long Fin de recv [ par Ziman ] Bonjour,je fais actuellement une chtite application. J'aimerai juste qu'un client se connecte sur un serveur et qu'il puisse lui envoyer des messages. problème avec fstream [ par clempar55 ] Voilà j'ai un problème avec la classe de lecture de fichiers fstream. Je dois écrire dans un fichier le contenu de d'un std:::string comportant des es


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,624 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales