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.
Partager