Bonjour,

Les "strings" en C continuent de me jouer des tours, voyez l'exemple suivant :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
char * str;
str = "0123456789";
printf("Le caractère en 3ème position est: %c\n", str[2]); /* Affiche 2 */
str[2] = '*'; /* Erreur de segmentation */
L'affectation du caractère '*' au 3ème élément de ma chaîne me génère une erreur de segmentation à l'exécution, aucune erreur de compilation.

S'agirait-il d'un overflow parce que je ne réserve qu'un pointeur char vers le début de la chaîne ? Le compilateur n'alloue-t-il pas la bonne quantité de mémoire automatiquement ? En effet, quand je définis str il ne pointe nulle part. Mais quand j'affecte la chaîne à ce pointeur, la chaine étant un tableau, str a pour valeur le pointeur vers le premier élément de type char. Le compilateur ne devrait-il pas allouer lui-même l'espace nécessaire pour le reste de la chaine ?

Merci d'avance pour votre éclairage !

Sébastien