Je ne comprends pas comment cela fonctionne. Dire que je donne les résultats suivants:C: Erreur d'impression étrange?
void print(char* str, int len)
{
int i = 0;
for (i=0; i<len; i++)
{
if (str[i]=='\0')
printf(" ");
else
printf("%c", str[i]);
}
printf("\n\n");
}
char* sym4 = "=";
char str2[strlen(var)+strlen(sym4)];
unsigned long temp1 = 0x00000008;
unsigned char* nTableSize = (unsigned char*)&temp1;
memcpy(str2, var, strlen(var));
memcpy(str2+strlen(var), sym4, 1);
memcpy(str2+strlen(var)+1, nTableSize, 4);
print(str2, 5);
print(str2, 6);
et en cours d'exécution, il donne la sortie:
var=
var
si évidemment quelque chose va mal (plus il est déconner le reste de mon programme vers le haut). Pourquoi nTableSize n'est-il pas correctement copié dans str2 de telle sorte que l'impression de 5 caractères entraîne une sortie différente de 6? ...
'memcpy (str2 + strlen (var) +1, nTableSize, 4);' est en dehors des limites. – chris
Comment ça se passe hors des limites? –
C'est juste assez grand pour les caractères 'strlen (var) + 1', mais vous en copiez autant, et ensuite 4 autres. – chris