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 :

Equivalent de la fonction trim


Sujet :

C

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2003
    Messages : 4
    Points : 4
    Points
    4
    Par défaut Equivalent de la fonction trim
    Salut,

    est-ce qu'il existe une fonction du style trim et si oui, quelle librairie je dois inclure pour pouvoir l'utiliser ?

    Merci a l'avance!

    Titre changé par Anomaly (anciennement "petit probleme bien simple!") - Les titres explicites permettent d'avoir plus de réponses, merci d'y penser à l'avenir !

  2. #2
    Membre habitué Avatar de Driden
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 146
    Points : 166
    Points
    166
    Par défaut
    Elle fait quoi cette fonction trim :

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2003
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    ben la fonction trim, d'habitude, supprime les espaces a gauche et a droite d'une chaine passee en parametre!

  4. #4
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par PCHINK
    ben la fonction trim, d'habitude, supprime les espaces a gauche et a droite d'une chaine passee en parametre!
    Il n'y a rien de tel en standard. C'est plutôt simple à faire soi même.
    Pas de Wi-Fi à la maison : CPL

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 14
    Points : 15
    Points
    15
    Par défaut
    Un truc comme ça

    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
    #include <ctype.h>
    char *trim (char *str)
    {
          char *ibuf, *obuf;
     
          if (str)
          {
                for (ibuf = obuf = str; *ibuf; )
                {
                      while (*ibuf && (isspace (*ibuf)))
                            ibuf++;
                      if (*ibuf && (obuf != str))
                            *(obuf++) = ' ';
                      while (*ibuf && (!isspace (*ibuf)))
                            *(obuf++) = *(ibuf++);
                }
                *obuf = '\0';
          }
          return (str);
    }

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 89
    Points : 102
    Points
    102
    Par défaut
    Salut,

    Merci SpeCiE,
    Ton code marche très bien et me sert justement

  7. #7
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par SpeCiE
    Un truc comme ça

    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
     
    #include <ctype.h>
    char *trim (char *str)
    {
       char *ibuf, *obuf;
     
       if (str)
       {
          for (ibuf = obuf = str; *ibuf;)
          {
             while (*ibuf && (isspace (*ibuf)))
                ibuf++;
             if (*ibuf && (obuf != str))
                *(obuf++) = ' ';
             while (*ibuf && (!isspace (*ibuf)))
                *(obuf++) = *(ibuf++);
          }
          *obuf = '\0';
       }
       return (str);
    }
     
    #ifdef TEST
    #include <stdio.h>
    #include <string.h>
     
    #define NB(a) (sizeof (a)/sizeof*(a))
     
    int main (void)
    {
       typedef struct
       {
          char const *sin;
          char const *sout;
       }
       test_s;
     
    /*
     * ben la fonction trim, d'habitude, supprime les 
     * espaces a gauche et a droite d'une chaine passee 
     * en parametre! 
     */
       static test_s const a[] =
       {
          {NULL, NULL},
          {"", ""},
          {" a", "a"},
          {"a ", "a"},
          {"    a", "a"},
          {"a    ", "a"},
          {" a b", "a b"},
          {" a b ", "a b"},
       };
       size_t i;
     
       for (i = 0; i < NB (a); i++)
       {
          test_s const *p = a + i;
     
          if (p->sin == NULL)
          {
             char *sout = trim (NULL);
             if (sout != NULL)
             {
                printf ("ERR at test %u\n", i + 1);
                break;
             }
          }
          else
          {
             char sin[32];
     
             strcpy (sin, p->sin);
     
             {
                char *sout = trim (sin);
     
                if (strcmp (sout, p->sout) != 0)
                {
                   printf ("ERR at test %u\n", i + 1);
                   break;
                }
             }
          }
       }
     
       if (i == NB (a))
       {
          puts ("PASSED");
       }
       return 0;
    }
     
    #endif
    Ca roule.
    Pas de Wi-Fi à la maison : CPL

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

Discussions similaires

  1. Réponses: 10
    Dernier message: 23/10/2008, 13h58
  2. Réponses: 3
    Dernier message: 07/09/2005, 09h55
  3. Réponses: 9
    Dernier message: 24/05/2005, 16h34
  4. fonction trim
    Par didier.cabale dans le forum SQL
    Réponses: 3
    Dernier message: 25/01/2005, 10h15
  5. Equivalent de la fonction d'agregat LIST ?
    Par rahan15 dans le forum SQL
    Réponses: 5
    Dernier message: 10/12/2004, 22h21

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