int main()
{
char *a1[10] = {"123","121"};
int i =0;
char *a=NULL;
for(i=0;i<2;i++)
{
a=strcat(a1[i],"0000");
printf("values %s",a);
}
}
此代码的输出如下:
$ ./a.exe values 1230000 values 0000000
但它应该是:
$ ./a.exe values 1230000 values 1210000
请告诉我哪里错了。
答案 0 :(得分:3)
你想要一个char数组的数组,但char * a1 [10]是一个指向char的指针数组(通常放在只读段/字符串文字中),试图修改字符串文字通常会导致分割故障。
更改
char *a1[10] = {"123","121"}; /* Array of string literals (read only) */
到
char a1[][10] = {"123","121"}; /* Array of array of char (read - write) */