[C] Ecrire un caractère dans une chaine

calaceite Messages postés 161 Date d'inscription   Statut Membre -  
calaceite Messages postés 161 Date d'inscription   Statut Membre -
Bonsoir,

Soit la chaîne déclarée par :
char *mot="lanrage";

La commande printf("%c",*(mot+3)); affiche le caractère 'r'. Pourtant si je veux changer ce 'r' en 'g', la commande suivante :

*(mot+3)='g';

ne marche pas. Pourquoi et comment faire ? Doit-on passer par strcpy ?

Merci.

Calaz

3 réponses

  1. kilian Messages postés 8675 Date d'inscription   Statut Modérateur Dernière intervention   1 526
     
    Tu trouveras une explication ici.
    http://c.developpez.com/faq/c/?page=strings#STRINGS_string_init

    En déclarant ainsi:
    char *mot="lanrage";
    tu fais pointer mot sur l'adresse du chaine de caractère constante.

    Pour ce que tu veux faire tu devrais utiliser:
    char mot[]="lanrage"
    0
    1. calaceite Messages postés 161 Date d'inscription   Statut Membre 10
       
      Merci Kilian
      0
  2. wiwimagique Messages postés 481 Statut Membre 108
     
    essaie

    mot[3] = 'g';
    -1