c - 数组第二个元素的值未正确打印

标签 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 值 1230000 值 0000000

但应该是 $./a.exe 值 1230000 值 1210000

请告诉我哪里错了

最佳答案

你想要一个 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) */

关于c - 数组第二个元素的值未正确打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26797825/

相关文章:

c - 是否推荐使用 fseek() 计算文件大小的方法?

c - Pthread 奇怪的行为和段错误

c - 将数据上传至 MAX 7219

c - 如何画一个圆?

java - 运算符作为 java 中的变量名称与 c 中的 #define 相同

c++ - 如何写短这个 "or"语句是不是?

c++ - 以 posix 方式绑定(bind)到特定的 NIC

c++ - 为什么这段代码的时间复杂度是O(N)?

c - 可以在分号前添加换行符吗?

c - 查找 int 链表中最常出现的元素的最简单方法