数组值出错了

时间:2015-10-11 05:37:26

标签: c

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

请告诉我哪里错了。

1 个答案:

答案 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) */