Arduino, ошибка передачи массива строк в функцию
Пытаюсь передать массив строк в функцию, но не могу понять, почему не выводятся строки. Вот код:
void PutMenu(byte curpoz,String items[]){
for (int i=0; i <= 3; i++){
char Buf[items[i].length() + 1];
items[i].toCharArray(Buf, items[i].length() + 1);
Serial.print(i); // выводит цифру
Serial.println(Buf); // ничего не выводит, почему??
Serial.println(items[i]); // ничего не выводит, почему??
memset(Buf, 0, sizeof(items[i].length() + 1));
}
}
void PutMenu_1(byte curpoz){
String someItems[]={"Exit","Exit2","Exit3","Item4","Item5"};
PutMenu(curpoz,someItems);
};
...
В чём я не прав?
Ответы (1 шт):
Автор решения: Грибов Павел
→ Ссылка
Дело в том, что нужно передавать ссылку на массив, а не сам массив. Кроме того, в результате такой передачи, теряется информация о длине массива. Таким образом правильная работа с массивами строк будет примерно такой:
int PutMenu(int cnt,String *mass){
for (int i=0; i <= cnt; i++){
Serial.println(mass[i]);
};
}
void setup(void){
Serial.begin(9600);
String massive[] = { "name", "test", "name", "need", "you", "need", "me", "test" };
PutMenu(3,massive);
return 0;
}
void loop(void){
}