Есть ли в Arduino какая-либо функция для доступа к последнему элементу массива

#c #json #arduino

Вопрос:

Я пишу программу, в которой мне нужно получить доступ к последнему элементу массива из документа json. массив изначально пуст, а размер не определен. есть ли способ получить последний элемент, как в python, мы используем[-1] для доступа к последнему.

 JsonArray Time_hours = doc["Time"]["hours"];
JsonArray Time_min = doc["Time"]["min"];

int size_hours = sizeof(Time_hours) / sizeof(int);
int size_min = sizeof(Time_min) / sizeof(int);

for(int i=1;i< size_hours ;i  ){

  if(now.hour() == Time_hours[i] amp;amp; now.minute() == Time_min[i])
  {
    ring_bell(1);
  }
 }
 

Комментарии:

1. Вам нужно знать размер. Это помогло бы увидеть пример того, с чем вы работаете.

2. Что вы используете для анализа документа json?

3. я использую библиотеку Arduinojson для анализа формата json.

4. Код Arduino-это C , и JsonArray это класс. Таким образом, у него будет метод, который сообщит вам длину массива. Вы можете Arduino JsonArray length поискать в Google название этого метода.

5. Time_hours.size()

Ответ №1:

Как сказал ниндзя, вам нужно знать размер, как только вы узнаете размер, вы сделаете что-то вроде этого

 #include <stdio.h>

#define len(arr) sizeof (arr)/sizeof (arr[0])

int main()
{
    int a[5] = {2,5,6,1,4};
    printf("%zun",len(a));
    printf("%dn",a[len(a) - 1]);
    return 0;
}
 

Комментарии:

1. sizeof это оператор, а не функция; вам не нужны круглые скобки.

2. Это более читабельно, по крайней мере для меня, это плохая практика?

3. Ну, вы можете поставить скобки там, где хотите. Я воспринимаю ненужные скобки как беспорядок. Добавление их всегда является вопросом стиля, когда в этом нет необходимости, споры приводят к «войнам стилей», подобным размещению фигурных скобок или условиям Йоды . По крайней мере, я бы отделил ключевое слово от открывающей скобки, чтобы было ясно, что это не функция.

4. Я предполагаю, что OP имеет представление массива JSON, а не простого массива C.

5. я хочу взять переменную из массива json,поместить ее в массив C и выполнить итерацию по ней с помощью цикла for.но чтобы установить ограничение, мне нужно знать размер массива, который не указан . итак, как мне следует действовать