Доброго времени суток!
У меня такой интересный вопросикс появился, как корректно прочесть размер массива из отдельного файла? Я написал функцию для вывода строк из массива на дисплей и обнаружил проблему, что int size = sizeof(array)/sizeof(array[0]);
или int size = sizeof(array);
всегда выводят 2. Если посавить int size = 8
, то при выводе массива без дополнительных пропусков в виде "", "Текст", "",
, массивы будут налезать на друг друга, и будут выводить что-то подобное. Я не могу предположить, с чем это может быть связано.
Мне нужно, что-бы на дисплей выводились корректно страницы, что бы код сам узнавал размер массивов.
Вот код скетча:
#define MAX_PAGE 4
#include "TestPages.h"
#include <EncButton.h>
#include <GyverOLED.h>
EncButton eb(6, 5, 7);
GyverOLED<SSD1306_128x64, OLED_NO_BUFFER> oled;
int page = 0;
void setup() {
Serial.begin(9600);
oled.init();
Wire.setClock(400000L);
printPage(page_0);
Serial.println();
}
void loop() {
if (eb.tick()) {
if (eb.right()) page++;
else if (eb.left()) page--;
if (page > MAX_PAGE) page=MAX_PAGE;
else if (page < 0) page=0;
switch (page) {
case 0:
printPage(page_0);
break;
case 1:
printPage(page_1);
break;
case 2:
printPage(page_2);
break;
case 3:
printPage(page_3);
break;
case 4:
printPage(page_4);
break;
}
}
}
void printPage(const char* array[]) {
oled.clear();
oled.home();
int size = sizeof(array); // выводит 2
for (int i = 0; i < size; i++) {
oled.println(array[i]);
}
oled.home();
oled.println(size);
}
Файл TestPages:
const char* page_0[] = {
"*----",
"Тест Тест Тест",
"Тест.",
};
const char* const page_1[] = {
"-*---",
"English ABC",
"",
"Aa Bb Cc Dd Ee Ff Gg",
"Hh Ii Jj Kk Ll Mm Nn",
"Oo Pp Qq Rr Ss Tt Uu",
"Vv Ww Xx Yy Zz"
};
const char* page_2[] = {
"--*--",
"Русский алфавит",
"",
"Аа Бб Вв Гг Дд Ее Ёё",
"Жж Зз Ии Йй Кк Лл Мм",
"Нн Оо Пп Рр Сс Тт Уу",
"Фф Хх Цц Чч Шш Щщ Ъъ",
"Ыы Ьь Ээ Юю Яя",
};
const char* page_3[] {
"---*-",
"Спец символы",
"",
"0 1 2 3 4 5 6 7 8 9",
"! ? . , / | @ # $ `",
"% ^ & * ( ) [ ] { }",
": ; ' < > + - = _ ~",
};
const char* page_4[] {
"----*",
"Максимальное кол-во",
"символов на строкеееее",
"0123456789012345678901",
"______________________",
"----------------------",
"абеме, абоба, абеме, а",
};
Буду очень благодарен вашей помощи!