其他分享
首页 > 其他分享> > 更改静态数组

更改静态数组

作者:互联网

我在文件中声明了一个静态变量:

static char *msgToUser[] = {
    "MSG1                ", 
    "MSG2                ",
};

在我正在做的一个类的方法之一:

void InfoUser::ModifyMsg( BYTE msgIdx, char *msgString ){
    strncpy( msgToUser[ idx ], msgString, DISPLAY_SIZE );
}

当我执行strncopy时,程序崩溃了.我不确定我做错了什么

解决方法:

您定义的数组是一个指向字符串的指针数组;每个字符串都是一个文字(即,被引用的字符串被解释为指针) – 这意味着它是一个常量,即使你没有这样声明它.您无法修改字符串文字.

如果您希望能够修改它们,可以使用显式数组分配:

// Note: The space padding isn't needed if all you require is that the string
// be able to hold DISPLAY_SIZE characters (incl the null terminator)
static char str_1[DISPLAY_SIZE] = "MSG1                ";
static char str_2[DISPLAY_SIZE] = "MSG1                ";
static char *msgToUser[] = { str_1, str_2 };

标签:c-3,strncpy,arrays,linux,segmentation-fault
来源: https://codeday.me/bug/20190726/1545472.html