我正在研究一个arduino项目,我一直在努力寻找一种方法来为2D指针数组(如果我是对的)赋值。
我有这个数组char* numbers[3][4];
我希望它是4个字符长-4个数字(如代码)。 但是请注意,我不能更改声明,只能更改字符串数。
我尝试用strcpy分配值:
strcpy(*numbers[0], "1234");
strcpy(*numbers[1], "5678");
strcpy(*numbers[2], "9012");
分配值后,应将数组用作函数的参数
void render_numbers(char** numbers, const int index);
它基本上在给定索引处在Arduino串行上打印4位代码。
所以我调用了该函数:
render_numbers(*numbers, 2);
我的功能:
void render_numbers(char** numbers, const int index){
Serial.println(numbers[index]);
}
因此它通过了编译器,但是在“串行”中它仅打印不可读的字符(正方形,问号等)
答案 0 :(得分:0)
要在c中分配字符串数组,请执行以下操作:
const char* numbers[]={"1234","5678","9012"};
声明字符串数组,每个字符串都有4个字符:
char numbers[3][4];
所以 数字[1] ==> char * //指向第一个字符的指针 数字[1] [2] ==> char // char值
声明2D指针数组
const char* numbers[][] = {{"1234","5678"},{"1234","1111"}};
注意:strcpy将源字符串复制到目标(包括空字符char),因此它需要5个字符才能存储4。
char numbers[3][5];
strcpy(numbers[1],"1234");
Serial.println(numbers[1]);