fonction replace en C ??

Répondre
Partager Rechercher
Citation :
Publié par Bliss190
Bonsoir,

Existe -il une fonction replace en C ? Si oui, comment s'utilise-t-elle, et quelle bibliothèque dois-je inclure ?

Merci pour votre aide,

Bonne soirée à tous
Pas nativement, le C est un langage très bas niveau dans lequel on fait "tout" à la main.
Avec un peu de recherches tu trouveras peut être une lib C proposant cette fonction, mais c'est même pas sûr...

Si tu débutes en C cette page pourrait te servir.

Si tu fais du C++ et non du C (certains confondent ) les strings de la STL proposent sûrement ce genre de fonctions, par contre.
C'est vrai que j'ai pas été des plus précise ...

Il s'agit bien du langage C. J'ai écrire dans un fichier, mais pour cela je dois remplcer certains caractères par d'autres pour mettre une chaîne de caractère dans mon fichier.

Je pense qu'il doit exister une fonction standard Replace (chaîne, carctère_recherché, caractère_qui_le_remplace) je pense.

C'est pas difficle de le programme,r, mais en même temps si elle existe existe, pourquoi la reprogrammer ?

Merci pour votre aide en tout cas.
Message supprimé par son auteur.
Citation :
Publié par Niwa
Commence le zappy au lieu de coder des aneries qui lui serviront si il les recodent
Rofl bon d'accord.
La voix du sage a parler. Tant pis pour lui, c'eut ete un modele d'optimisation.

Mais en meme temps j'ai pas encore de groupe pour le zappy alors moyen quoi ^^
Citation :
Publié par Bliss190
Je pense qu'il doit exister une fonction standard Replace (chaîne, carctère_recherché, caractère_qui_le_remplace) je pense.
bah c'est bien ce qu'il demande...

quand à ton strdup, il le fait s'il le veut avant, mais il n'est absolument pas necessaire ...
Citation :
Publié par XhaK
Code:
 
    void replace_mon_caractere_bidon(char * str, char a, char b){
      int i = 0;
      while( str[i] != '\0' ){
        if( str[i] == a )
          str[i] = b;
        i++;
      }
    }
hum, c'était dur
Moi j'aurais plutot utilisé strchr:
http://www.cplusplus.com/ref/cstring/strchr.html
qui cherche la 1ere occurence de a

ca ferait sans doute un truc comme ca:
Code:
 
     void replace_mon_caractere_bidon(char * str, char a, char b){
    while(str=strchr(str,a)){
       *str=b;
 str++;
    }
     }
Citation :
Publié par Sereg
Moi j'aurais plutot utilisé strchr:
http://www.cplusplus.com/ref/cstring/strchr.html
qui cherche la 1ere occurence de a

ca ferait sans doute un truc comme ca:
Code:
 
     void replace_mon_caractere_bidon(char * str, char a, char b){
    while(str=strchr(str,a)){
       *str=b;
 str++;
    }
     }
sauf que ton truc c'est completement pas optimisé parceque strchr il va parcourir la chaine jusqu'à rencontré le truc, et ce autant de fois qu'il y a le char plus 1

c'est beaucoup plus mieu de parcourir la chaine une fois

fo pas tout le temps chercher à utiliser toutes les fonctions de la stdlib pour faire son kéké quand elles servent à rien, et encore moins quand elles te pourrissent les performances
Citation :
Publié par XhaK
sauf que ton truc c'est completement pas optimisé parceque strchr il va parcourir la chaine jusqu'à rencontré le truc, et ce autant de fois qu'il y a le char plus 1

c'est beaucoup plus mieu de parcourir la chaine une fois

fo pas tout le temps chercher à utiliser toutes les fonctions de la stdlib pour faire son kéké quand elles servent à rien, et encore moins quand elles te pourrissent les performances
Pas vraiment, puisqu'il ne relance strchr que sur la suite de la chaine.
Par contre le code est relativement illisible pour quelqu'un qui n'a pas l'habitude de coder en c... il est recommandé en c de faire des efforts pour coder de manière lisible. Surtout que là, si la fonction est appelée avec std=NULL, il a un joli segmentation fault

Code:
void replace_mon_caractere_bidon(char * str, const char a, const char b)
{
    while (str != NULL)
    {
         str = strchr(str, a)
        *str = b;
        str++; // str pointe sur le prochain caractère
    }
}
Cela dit il est vrai que dans un cas aussi simple, autant coder directement sa fonction, comme ce que tu as proposé
Citation :
Publié par Lango

Code:
  void replace_mon_caractere_bidon(char * str, const char a, const char b)
  {
      while (str != NULL)
      {
           str = strchr(str, a);
          *str = b;
          str++; // str pointe sur le prochain caractère;
      }
  }
A force, on va y arriver
Oublie pas que strchr renvoie null s'il n'a pas trouvé a:

Code:
   void replace_mon_caractere_bidon(char * str, const char a, const char b)
   {
       while (str != NULL)
       {
            str = strchr(str, a);
  if (str) {
    *str = b;
    str++; // str pointe sur le prochain caractère;
  }
       }
   }
Citation :
Publié par XhaK
sauf que ton truc c'est completement pas optimisé parceque strchr il va parcourir la chaine jusqu'à rencontré le truc, et ce autant de fois qu'il y a le char plus 1

c'est beaucoup plus mieu de parcourir la chaine une fois

fo pas tout le temps chercher à utiliser toutes les fonctions de la stdlib pour faire son kéké quand elles servent à rien, et encore moins quand elles te pourrissent les performances
Celui qui se la pete n'est pas forcément celui que l'on croit

S.
Répondre

Connectés sur ce fil

 
1 connecté (0 membre et 1 invité) Afficher la liste détaillée des connectés