将字符串写入到指针数组中,指向的内容无故发生变化
调试时显示的转化后的字符串是正确的,但是写入到数组后不知为什么,相同地址指向的数据无缘无故发生改变,如下图

[解决办法]
//假设s在内存地址00400100处
i=0;
sprintf(s+i,"%d",i);//00400100 30 00
printf("%s\n",s+i); //0
i=1;
sprintf(s+i,"%d",i);//00400100 30 31 00
printf("%s\n",s+i); //1
i=2;
sprintf(s+i,"%d",i);//00400100 30 31 32 00
printf("%s\n",s+i); //2
i=3;
sprintf(s+i,"%d",i);//00400100 30 31 32 33 00
printf("%s\n",s+i); //3
int i=0;
char *s=(char *)malloc(sizeof(char)*60),*string[20];
for(i=0;i<20;i++)
{
sprintf(s+i*3,"%d",i);//将i按10进制格式写入到s+i区域
printf("%s\n",s+i*3);
string[i]=s+i*3;//将字符串存入指针数组string中
}
for(i=0;i<20;i++)
{
printf("%s\n",string[i]);
}
free(s);
return 0;