[C, chaînes de caractères, pointeurs]

Faradn Messages postés 57 Statut Membre -  
fiddy Messages postés 11653 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

Voici le code suivant qui isole mon problème :

#include <stdio.h>

int main(int argc, char** argv) {
 char *a = "hahah";
 printf("%c\n",*a);
 a++;
 *a = 't';
 a--;
 while(*a != '\0') {
 printf("%c",*a);
 a++;
}
printf("\n");
 return 0;
}


Le code plante (mais compile) à cause de la ligne *a = 't';

Pourquoi ? Je pense que c'est vraiment une erreur stupide de ma part mais je ne suis plus suffisamment concentré pour repérer les absurdités éventuelles ...

Merci pour votre aide !

Cordialement,

Faradn

A voir également:

1 réponse

fiddy Messages postés 11653 Date d'inscription   Statut Contributeur Dernière intervention   1 847
 
Bonjour,
char *a = "hahah";
Ceci veut dire que vous déclarez une chaîne constante dans la mémoire qui vaut "hahah" et la variable a pointe sur cette zone (qui est en lecture seule).
Lorsque vous tentez d'écrire sur cette zone, cela plante.
Il faut donc plutôt mettre : char a[]="hahah";
Et là, le reste marchera.

Cdlt,
0