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){

}
→ Ссылка