IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

supprimer les espaces d'une chaine de caracatères ?


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 10
    Par défaut supprimer les espaces d'une chaine de caracatères ?
    salut les gens !

    je sais je suis bidon, j'ai beau chercher j'y arrive pas !
    quelle fontion c permet de supprimer les espaces d'une chaine de caractères ?
    je cherche, mais je trouve rien...

    plus qu'une solution un lien vers les fonctions c permettant la manipulation de chaines de caractères me serait très utile !

    merci d'avance

  2. #2
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Par défaut
    Bonjour et bienvenue sur le forum de developpez

    Les seules fonctions a utiliser pour faire du code standard sont listées ici, pour la manipulation des chaîne de caractères, il s'agit du fichier d'en tête string.h.
    Il n'existe pas de fonctions qui font ce que tu demande, il faut que tu la code. Rien de bien méchant, poste ton code si tu recontre des problèmes

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 12
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
     
    char	*after_space(char *str)
    {
      return (++str);
    }
     
    char	*rm_space(char *str)
    {
      char	*save;
     
      save = str;
      while (*str)
        {
          if (*str == ' ')
            strcpy(str, after_space(str));
          str++;
        }
      return (save);
    }
     
    int	main(int ac, char **av)
    {
      char	*str;
     
      if (ac == 1)
        exit (1);
      str = malloc(sizeof(**av) * strlen(av[1]));
      strcpy(str, av[1]);
      printf("%s\n", str);
      printf("%s\n", rm_space(str));
      free(str);
      return (0);
    }
    • $ cc -W -Wall parsing.c
      [1]+ Done emacs parsing.c
      $ ./a.out "salut ca va" | cat -e
      salut ca va$
      salutcava$
      $

  4. #4
    Membre émérite
    Avatar de Pouic
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    669
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 669
    Par défaut
    gentil_robot >> joli code (en plus, emacs, tout ça )
    Mais un peu trop d'appels à strcpy à mon goût... (dans une boucle, bôf...En plus, on perd la chaîne d'origine)

    J'aurais plutôt fait un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
     
    char *rm_spaces(char *s){
     
        size_t taille = strlen(s);
        size_t nb_spaces = 0;
        char *ret, *tmp = s;
     
        while(*tmp){
            if (*tmp == ' ') { nb_spaces++; }
            tmp++;
        }
     
        if ( ! (ret = malloc( taille-nb_spaces+1))){
            exit (1);
        }
     
        tmp = ret;
        while(*s){
            if (*s != ' ') { *tmp++ = *s; }
            s++;
        }
        *tmp = 0;
     
        return ret;
    }
     
    int main(void){
     
        char s_space[] = "chaine avec espaces . . .";
        char *res = rm_spaces(s_space);
     
        printf("%s\n", s_space);
        printf("%s\n", res);
        free(res);
     
        return 0;
    }
    Software becomes slower faster than hardware becomes faster
    [size=1]
    http://xrenault.developpez.com

  5. #5
    kap
    kap est déconnecté
    Membre confirmé
    Inscrit en
    Octobre 2005
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 188
    Par défaut
    c'est pas le même problème mais tu peux t'en inspirer (si tu ne veux pas utiliser les codes donnes précédemment)

    http://www.developpez.net/forums/viewtopic.php?t=410152

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 10
    Par défaut
    ce code me plait bien merci !
    mais je pensais (à tort peut-être) qu'il fallait utiliser strcmp dès que l'on parle comparaison de caractères ?

  7. #7
    kap
    kap est déconnecté
    Membre confirmé
    Inscrit en
    Octobre 2005
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 188
    Par défaut
    en regardant le lien donné par gege2061 voila ce que j'ai trouvé:
    int strcmp(const char* cs, const char* ct);
    Compares cs with ct, returning negative value if cs<ct, zero if cs==ct, positive value if cs>ct.
    strcmp sert a comparer 2 chaines de caractères entre elles mais si ta chaine ne comporte qu'un seul caractère tu peux tres bien le comparer en faisant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (caractère_testé=="caractère_voulu")

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 10
    Par défaut
    merci à tous

  9. #9
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    kap :
    strcmp sert a comparer 2 chaines de caractères entre elles mais si ta chaine ne comporte qu'un seul caractère tu peux tres bien le comparer en faisant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (caractère_testé=="caractère_voulu")
    Non :
    1- Le caractère à tester est de la forme caractère_testé[0] si caractère_testé est une chaîne de caractères (même si il n'y en a qu'un
    2- caractère_voulu doit être entre guillemets simples
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (caractère_testé[0] =='caractère_voulu')...

  10. #10
    kap
    kap est déconnecté
    Membre confirmé
    Inscrit en
    Octobre 2005
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 188
    Par défaut
    caractère_voulu doit être entre guillemets simples
    me suis plante de touches pardon

    Le caractère à tester est de la forme caractère_testé[0] si caractère_testé est une chaîne de caractères
    j'entendais que caractère_testé=chaine[0] (d'ailleurs j'ai bien mis caractère, quelle que soit la facon d'accéder à ce caractère)

    en tout cas on est d'accord même si on s'est mal compris...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Supprimer les espaces d'une chaine
    Par lido dans le forum SQL
    Réponses: 2
    Dernier message: 06/02/2008, 16h22
  2. Réponses: 9
    Dernier message: 06/11/2007, 12h36
  3. supprimer les espaces dans une chaine de char
    Par poulette3000 dans le forum Linux
    Réponses: 2
    Dernier message: 17/10/2007, 11h45
  4. Supprimer les espaces dans une chaine de caractères
    Par arnaudperfect dans le forum Shell et commandes GNU
    Réponses: 13
    Dernier message: 23/07/2007, 22h24
  5. Supprimer les espaces d'une chaines de caractères
    Par pekka77 dans le forum Langage
    Réponses: 4
    Dernier message: 09/08/2006, 17h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo