我试图将一个整数数组,A []转换为字符串数组,B [],然后我终于将字符串数组转换为单个字符串。我收到了运行时错误。请检查。
for(i=0;i<n1;i++)
{
int a=A[i],digits=0;
while(a!=0)
{
a=a/10;
++digits;
}
B[i]=(char*)malloc(digits+1);
snprintf(B[i],digits+1,"%d", A[i]);
}
char *x=B[0];
for(i=1;i<n1;i++)
strcat(x,B[i]);
最后x包含我使用strcat函数通过连接所有B [i]&#39>创建的字符串
为什么运行时错误?
答案 0 :(得分:2)
由于B[0]
被初始化为某种“小”尺寸,因此A[0]
位数的长度。 strcat
然后写入未分配的内存。
解决此问题的方法是维护一个全局长度计数器,将x
分配到正确的大小,并strcat
包括B[0]
在内的所有内容。