これがどのように機能するかわかりません。私は次のものを持っているとしましょう:
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);
それを実行すると、次の出力が得られます。
var=
var
明らかに何かがおかしくなっています (さらに、プログラムの残りの部分が台無しになっています)。nTableSize が正しく str2 にコピーされず、5 文字を印刷すると 6 文字とは異なる出力になるのはなぜですか?...