Bonjour a tous,


Voila , je sais que toutes les chaine de caractère en C se termine par 0, on est bien daccord . Cependant une question me chiffone depuis bien longtemp.

Pour déclarer une chaine avec 10 caractère on fait ceci :

char szData[10+1];

Car on compte le 0.

Mais ma question se pose lors d'une allocation dynamique , exemple :

char * szData;
long lSizeFile = 3313;

szData = (char*) malloc(sizeof(char)*lSize);

Ce que je ne comprend pas, c'est que lSize contient exactement la taille du fichier et lorsque on lit le contenut du fichier, on dirait que le 0 final c'est mit directement . Si on suis le raisonement, on aurai du faire :

char * szData;
long lSizeFile = 3313;

szData = (char*) malloc(sizeof(char)*(lSize+1));
*szData+lSize=0;

J'espère que vous voyez ce que je veu dire.

est-ce parce que on alloue 3313 et que vu que l'on compte pour un chaine de 0-3312 est ce que le dernier byte est mis directement à zéro comme fin de chaine ?

Merci d'avance.