• # je ne fait que mon boulot ...

    Posté par (site web personnel) . En réponse au message Chaines constantes.... Évalué à 7.

    Comme je suis prof de C/UNIX, voici mon humble explication ...

    Dans un programme qui s'exécute (un process quoi), on distingue deux parties : statique et dynamique.

    Dans la partie dynamique on va trouver tes variables (*sChaine par ex) qui peuvent changer au cour de l'exécution (allocation, free, toussa ...)
    Dans la partie statique, on va trouver les variables et constantes dont la valeur a pu être définie au moment de la compilation (#define , chaines constantes : char *str="coin ! coin !\n", etc ...)
    La partie dynamique est evidement en R/W.
    La partie statique est en RO !

    donc faire sChaine = CHAINE1 affecte a un pointeur sur char une adresse pointant dans la partie statique de ton programme, donc un access que tu crois en R/W alors qu'il sera en fait en RO ! Une belle source de core dumps !
    Maintenant, si tu te contente de les afficher, aucun pb. par contre, essaye de faire un :
    sChaine = CHAINE1;
    sChaine[0] = sChaine[0] - 'a' + 'a'; // Met en majuscule la 1ere lettre de la chaine


    Ca plante aussi sec !