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

Contribuez Discussion :

Manipulation de chaînes de caractères [Sources]


Sujet :

Contribuez

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 81
    Points : 51
    Points
    51
    Par défaut Manipulation de chaînes de caractères
    à partir des sources même de ce site (§8 http://c.developpez.com/sources/c/?page=sommaire), des fonctions de manipulation de chaînes de caractères :

    le code source original de remplacement d'une sous-chaîne (vieux) par une autre (nouveau) dans une chaîne de caractères (source) :
    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
    int RemplacerFragment (char *source, const char *vieux, const char *nouveau)
    {
      char *original = source;
      char temp[4096];
      int ancienne_long = strlen (vieux);
      int i, j, k, place = -1;
      for (i = 0; source[i] && (place == -1); ++i)
        for (j = i, k = 0; source[j] == vieux[k]; j++, k++)
          if (!vieux[k+1])
            place = i;
      if (place != -1) 
      {
        for (j=0; j<place; j++)
          temp[j] = source[j];
        for (i=0; nouveau[i]; i++, j++)
          temp[j] = nouveau[i];
        for (k = place + ancienne_long; source[k]; k++, j++)
          temp[j] = source[k];
        temp[j] = 0;
        for (i=0; source[i] = temp[i]; i++)
          ;
      }
      return place;
    }
    une digression du code précédent de remplacement d'une sous-chaîne (vieux) dans une chaîne (source) par une nouvelle sous-chaîne (nouveau) si cette sous-chaîne est encadrée par une chaîne de séparation (separateur)
    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
    int RemplacerFragment (char *source, const char *vieux, const char *nouveau, const char *separateur)
    {
      char *original = source;
      char temp[4096];
      int ancienne_long = strlen (vieux);
      int i, j, k, place = -1;
      for (i = 0; source[i] && (place == -1); ++i)
        for (j = i, k = 0; source[j] == vieux[k]; j++, k++)
          if (!vieux[k+1] && (i==0 || source[i-1]==*separateur) && (source[j+1]== *separateur || source[j+1]=='\n'))
            place = i;
      if (place != -1) 
      {
        for (j=0; j<place; j++)
          temp[j] = source[j];
        for (i=0; nouveau[i]; i++, j++)
          temp[j] = nouveau[i];
        for (k = place + ancienne_long; source[k]; k++, j++)
          temp[j] = source[k];
        temp[j] = 0;
        for (i=0; source[i] = temp[i]; i++)
          ;
      }
      return place;
    }
    une fonction qui permet d'ôter la fin de chaîne d'une chaîne (source) à partir de la position d'une sous-chaîne (vieux)
    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
    int RetirerCommentaire (char *source, const char *vieux)
    {
      char *original = source;
      char temp[4096];
      int ancienne_long = strlen (vieux);
      int i, j, k, place = -1;
      for (i = 0; source[i] && (place == -1); ++i)
        for (j = i, k = 0; source[j] == vieux[k]; j++, k++)
          if (!vieux[k+1])
            place = i;
      if (place != -1)
      {
        for (j=0; j<place; j++)
          temp[j] = source[j];
        temp[j] = 0;
        for (i=0; source[i] = temp[i]; i++)
          ;
      }
      return place;
    }
    Une fonction qui permet de remplacer une sous-chaîne non précisée par une nouvelle (nouveau) si elle est encadrée par deux sous-chaînes (vieux1 et vieux 2)
    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
    int RetirerCommentaire (char *source, const char *vieux1, const char *nouveau, const char *vieux2)
    {
      char *original = source;
      char temp[4096];
      int ancienne_long = strlen (vieux1);
      int i = 0, j = 0, k = 0, place1 = -1, place2 = -1;
      for (i = 0; source[i] && (place1 == -1); ++i)
        for (j = i, k = 0; source[j] == vieux1[k]; j++, k++)
          if (!vieux1[k+1] )
            place1 = i;
      for (i = j; source[i] && (place2 == -1); ++i)
        for (j = i, k = 0; source[j] == vieux2[k]; j++, k++)
          if (!vieux2[k+1] )
            place2 = j;
      if (place1 != -1 && place2 != -1) 
      {
        for (j=0; j<place1; j++)
          temp[j] = source[j];
        for (i=0; nouveau[i]; i++, j++)
          temp[j] = nouveau[i];
        for (k = ++place2 ; source[k]; k++, j++)
          temp[j] = source[k];
        temp[j] = 0;
        for (i=0; source[i] = temp[i]; i++)
          ;
      }
      return place1 != -1 && place2 != -1 ;
    }

  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 : 40
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Points : 11 625
    Points
    11 625
    Par défaut
    Je vais regarder ça à tête reposée.

    pour ton aide.

Discussions similaires

  1. Manipulation de chaîne de caractère
    Par tonio-lille dans le forum Access
    Réponses: 1
    Dernier message: 11/12/2006, 18h42
  2. MFC + Manipuler les chaînes de caractères
    Par mqsi dans le forum MFC
    Réponses: 2
    Dernier message: 15/11/2006, 16h24
  3. Manipulation de chaînes de caractères
    Par sbeprod dans le forum Access
    Réponses: 15
    Dernier message: 28/07/2006, 14h33
  4. Réponses: 3
    Dernier message: 07/12/2005, 10h09
  5. Etat - Manipulation de chaînes de caractères
    Par migaleb dans le forum Access
    Réponses: 3
    Dernier message: 07/12/2005, 09h55

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