Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C ';崩溃';更改多维字符数组的值时_C_Arduino - Fatal编程技术网

C ';崩溃';更改多维字符数组的值时

C ';崩溃';更改多维字符数组的值时,c,arduino,C,Arduino,数组的定义如上所述。它需要动态更改,但我不确定如何定义每个字符数组的最大大小 读取值完全按照预期工作,但当试图更改任何值时,微控制器崩溃 char * charArray[][6][3] = { { {"2"}, //Size of 1st dimension }, {//Section 1 {"5"}, //Size of each 2nd dimension {"Option 1", "21", "0"},

数组的定义如上所述。它需要动态更改,但我不确定如何定义每个字符数组的最大大小

读取值完全按照预期工作,但当试图更改任何值时,微控制器崩溃

    char * charArray[][6][3] = {
    {
        {"2"}, //Size of 1st dimension
    },
    {//Section 1
        {"5"}, //Size of each 2nd dimension
        {"Option 1", "21", "0"},
        {"Option 2", "493", "1"},
        {"Option 3", "102", "0"},
        {"Option 4", "531", "1"},
        {"Option 5", "20", "0"},
    },
    {//Section 2
        {"3"},
        {"Something else", "50", "0"},
        {"Any text can", "1654", "0"},
        {"be in these", "1190", "0"},
    },
};
我已经尝试了我能想到的一切,但没有任何运气


有谁能帮助我了解发生了什么,以及是否有更好的方法来实现这一点?

当您使用字符串文本定义和初始化指向char的指针时,就像这样

charArray[1][2][3][0] = '0';
。。。您正在常量内存中分配一个字符数组,将其初始化为文本值,并将
char
指针
p
指向该常量内存。不允许修改:
p[1]='u'是不合法的

如果显式定义数组而不是指针,则可以修改字符

char* p = "Hello World";

将其扩展为多维是留给读者的练习。

蒂姆·兰德尔已经解释了发生了什么。如果您同意将字符串作为一个整体进行更改,而不是替换单个字符,则可以替换为e。g

char p[] = "Hello World";


您尝试执行的操作的可能重复本质上归结为
“5”[0]=“2”
。你认为这有意义吗?
charArray[1][2][3][0] = '0';
charArray[1][2][3] = "0";