[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 -
fiddy Messages postés 11653 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Voici le code suivant qui isole mon problème :
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
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:
- [C, chaînes de caractères, pointeurs]
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Caractères spéciaux - Guide
- Caracteres speciaux - Guide
- Caractères ascii - Guide
- Caractères spéciaux mac - Guide
1 réponse
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,
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,