begin process at 2012 05 28 21:02:47
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Débutant(e)

 > 

Enlever les espaces


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

Enlever les espaces

vendredi 11 mai 2007 à 23:07:39 | Enlever les espaces

darkwhite

Salut a tous, bah voila je veux resoudre l'exercice batteau d'enlever les espaces d'une chaine de caracteres. Pourtant j'ai fait ce code :

# include <stdio.h>

int main ()
{
  char chaine[200];
  int i=0;
  scanf("%s",&chaine);

  while(chaine[i]!='\0')
    {
      if (chaine[i]==' ')
     
      chaine[i]='_';
      i++;
    
    }
  i=0;
 while(chaine[i]!='\0')
    {
      printf("%c",chaine[i]);
     
       i++;
         }
 printf("\n");
}

Qui evidement ne marche pas !!
En effet il m'affiche la chaine de caractere tronquée avant un espace. Je m'explique :
Si je rentre :
"je part"
il renvoit
"je"
Ou est passer l'autre partie aller savoir
Donc ou est le probleme ? merci d'avance

vendredi 11 mai 2007 à 23:31:32 | Re : Enlever les espaces

SAKingdom

Membre Club
Réponse acceptée !
C'est scanf qui fait ça je crois. Essais avec gets.

C++ (@++)

vendredi 11 mai 2007 à 23:39:09 | Re : Enlever les espaces

SAKingdom

Membre Club
Réponse acceptée !
Tien revoici ton code mais en un peu mieu:

int main (void)
{
  char chaine[200], *c = chaine;
  gets(chaine);

  while(*c){
    if(*c == ' ') *c = '_';
    ++c;
  }

  printf("%s\n", chaine);

  return 0;
}


C++ (@++)

samedi 12 mai 2007 à 10:10:25 | Re : Enlever les espaces

darkwhite

Ok
Dabord quad je remplace scanf par gets, a la compilation gcc me renvoie :
 
gcc -o espace espace.c
/tmp/ccSAsAss.o: dans la fonction « main »:
espace.c:(.text+0x2e): AVERTISSEMENT: the `gets' function is dangerous and should not be used.

Faut il utiliser une autre commande de compilations ?

Ensuite que signifie l'expression "while(*c) ? et pourquoi utiliser des pointeurs plutot que des tableaux?
samedi 12 mai 2007 à 10:42:33 | Re : Enlever les espaces

darkwhite

AHAH j'ai été un peu con sur ce coup la !!
En effet c'est juste un avertissement que le compilateur me renvoie sinon le code marche tres bien. Merci beaucoup

ps: les question precedentes tiennent toujours...
samedi 12 mai 2007 à 11:13:21 | Re : Enlever les espaces

vecchio56

Administrateur CodeS-SourceS
Réponse acceptée !
Avertissement à prendre en considération car gets ne permet pas de spécifier la taille du buffer.
Tu devrais utiliser fgets à la place, qui te permet de dire la taille du buffer passée. Pour le dernier paramètre, tu mets stdin pour lire sur l'entrée standard.

while(*c) signifie while(*c != 0) ou encore while(*c != '\0'), '\0' étant le caractère utilisé pour les fins de chaines. Ca veut donc dire tant qu'on n'a pas atteint la fin de la chaine.
L'utilisation des pointeurs et équivalente à un accès indexé au tableau, sauf que les instructions générées sont plus courtes. En gros ca revient au même, c'est surtout une question de goût.

_____________________________________
Un éditeur de ressources gratuit pour Windows

samedi 12 mai 2007 à 11:14:58 | Re : Enlever les espaces

darkwhite

Ok merci beaucoup


Cette discussion est classée dans : int, chaine, while, espaces, enlever


Répondre à ce message

Sujets en rapport avec ce message

int => chaine de caractères ? [ par kjus ] vala, il me faudrait transformer une variable int en chaine de caractère.Y a-t-il une fonction toute faite ?en fait, mon but est de l'inscrire dans un Convertion "15"(string) --> 15(int) [ par crocejf2000 ] (Re)SalutIl faut que je test ma chaine et que je la convertisse si je peut. Avec atoi("12"), ca me donne bien 12, mais si je fait un atoi("12hach"), c help :: String => Int [ par Skyman ] Comment on fait pour changer un string en int ou en long ?ex :char *chaine;int entier;long entierlong;chaine = "1234";int = chaine; // (int = 1234) aidez moi svp [ par asnow ] Q'un aurait-il la gentillesse de me traduire ce code, en algorithme. merci d'avance.int i=0;int x=random(10);int y=random(10);int type_pos=random(2);i Algo trop lent :( [ par MoDDiB ] Bon tout d'abord je tient à préciser qu'il s'agit du concours prologin auquel je compte participer donc si certaines personnes ne veulent pas m'aider interface de jeu [ par cafou ] sltest ce que qu'elqu'un peut me propose une interphase graphique et des animations au jeu en language c si dessousmerci d'avance#include#include#incl Petite question de débutant While && [ par Nicolas67 ] j?ai un soucis dans le While le ?? n?est pas pris en compte.while ((inValeur1Temp!=0 && inValeur2Temp!=0));je veux qu?il tourne DO jusqu?à ce inValeur enlever le 1er carctère d'une chaine... [ par Guidelor ] BONJOUR A TOUS !j'ai fait un prog avec Dev-C++ où un moment l'utilisateur tape une chaine type a7 ou g13la premiere lettre correspond à 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 Découpage de n premiers caractères d'une chaine [ par Guidelor ] BonjourJ'ai une chaine1 ="aaaaaaaaa123456"J'aimerais enlever "aaaaaaaaa"comment faire sachant que ce que je ve enlever est situé entre le 1er et le 10


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 : 2,340 sec (3)

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