之前都还没有意识到 sprintf会在字符串缓冲追加 '\0'字符,今天在写一个小程序时真实感受到了。
如:
typedef struct _SE_DATA{
unsigned long id;
char md5[32];
char data[64];
}SE_DATA;
unsigned char md5[16] = {0};
...
...
for (i = 0;i < 32;i+=2)
sprintf(&se.md5[i],"%02X",md5[j++]);
结果是覆盖了 se.data 的内容,导致这部分无法打印出来。