En reprenant ton exemple,
ligne = (char *)malloc(sizeof(char)*256);
tu alloues une zone mémoire de 256 char, pointée par le pointeur "ligne".
Là, tu créées une chaîne de caractère constante, sur laquelle "ligne" pointe.
En fait, ça provoque deux problèmes :
1) Tu provoques une fuite de mémoire car, vu que tu as modifié la valeur du pointeur, tu ne peux plus libérer la zone mémoire effectuée par le malloc.
2) Comme tu pointes sur une chaîne constante, tu ne peux pas la modifier.
Par contre :
char ligne[10]="bonjour";
créée un tableau de 10 caractères (terminé par \0) initialisé par "bonjour\0". Le contenu du tableau peut être modifié, mais "ligne" ne peut pas l'être.
Partager