Remplacement d'un caractère par un autre dans une chaine

Remplacement d'un caractère par un autre dans une chaine - C - Programmation

Marsh Posté le 24-07-2008 à 15:37:21    

Bonjour à tous,
 
J'aimerais remplacer, dans une chaîne, un caractère par un autre. Par exemple, remplacer un '.' par un '_' dans la chaine "test.test1".
 
Voilà ce que j'ai fait et cela me met qu'il y a une erreur de segmentation.
 

Code :
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <stdlib.h>
  4. char* str_replace(char ancien,char nouveau,char* mot) {
  5. int longueur = strlen(mot),i;
  6. for(i=0;i<longueur;i++) {
  7. if(mot[i] == ancien) {
  8. mot[i] = nouveau;
  9. }
  10. }
  11. return mot;
  12. }
  13. int main(void)
  14. {
  15. char* mot = "test.test";
  16. char ancien = '.';
  17. char nouveau = '_';
  18. char *res;
  19. res = str_replace(ancien,nouveau,mot);
  20. printf("$jhp_id_%s\n", res);
  21. return 0;
  22. }


 
Merci pour votre aide

Reply

Marsh Posté le 24-07-2008 à 15:37:21   

Reply

Marsh Posté le 24-07-2008 à 15:41:17    

Normal :

Code :
  1. char * mot = "test.test"
 

Ici, la variable mot est en fait de type const char * et n'est pas modifiable, cela résulte en segfault.

 

Il faut écrire :

Code :
  1. char mot[] = "test.test";



Message édité par Elmoricq le 24-07-2008 à 15:41:40
Reply

Marsh Posté le 24-07-2008 à 15:42:12    

Arf, presque bon. Remplace la ligne 19 par:
 

Code :
  1. char mot[] = "test.test";


 
Les chaines statiques ne peuvent pas être modifiées.
 
Edit: [:benou_grilled]


Message édité par tpierron le 24-07-2008 à 15:43:00
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed