首先有一个函数将char数组转换为char数组:
char *tohex(char bnyin[32]) {
static char hexout[8];
....
return hexout;
}
char hex[8] = "00000000";
char bny[32] = "00000000000000000000000000000000";
int num = 20;
int remap_bf[21];
for (i=0;i<num;i++)
{
bny[remap_bf[i]]='1';
}
strncpy(hex, tohex(bny),8);
printf("%s", hex);
printf("\n");
此时我可以打印出关于char hex的正确结果,但之后,
int bkn[8];
int bfn[8];
int num = 20;
for (i=0;i<num;i++) {
bkn[i] = remap_bf[i] / 8;
bfn[i] = remap_bf[i] % 8;
}
printf("%s", hex);
printf("\n");
虽然这次它只打印任何东西或奇怪的角色。由于代码的第二部分不影响十六进制数组,为什么它会丢失?有趣的是,当num为8时,两个打印看起来都是正确的,但是当num变为20时,第二个打印得不到任何东西。