Как посчитать количество байт в массиве?
- Войдите на сайт для отправки комментариев
Чт, 04/02/2016 - 11:39
Подскажите пожалуйста как можно посчитать автоматом количество байт в массиве
То есть если длина строки увеличилась в массиве соответственно и в переменной “а” меняем количество байт.
nsigned char our_data[40] = {"1,2,3,4,5,6,7,8"}; int a = 15; void setup() { Serial.begin(9600); } void loop() { unsigned char i; for (i = 0; i < a; i = i + 1) { Serial.println(our_data[i]); } Serial.println(" "); delay(1000); }
sizeof(msg) всегда будет 2. msg это указатель на массив.
аргументируй
Надо так
аргументируй
блин. меня сбило название темы
Во-первых цель непонятна, точнее неоднозначна. Если нужно просто узнать длину строки, то есть функции типа strlen(); Но тогда почему, если в массиве хранится символьная строка, массив объявлен как unsigned char, почему не просто char. Вторая неоднозначность, почему массив вообще указан с фиксированной длиной (40)? Массив содержит изменяемые данные, т.е. строку в массиве можно будет изменить? А если нет, тогда почему он не const char, и вообще, зачем он нужен как массив, если строку можно вывести в Serial и как строку, а не как отдельные символы. Надеюсь автор понимает, что записав в массив, например, строку "12", нужно выделять под такую строку 3 char, т.е. с учетом завершающего символа '\0'.
Надо так
Ну, так-то точно не надо. Вы это запускали?
Да и ТС вроде нужно длину char * искать (чем ему не угодила стандартная strlen - не понимаю), а вовсе не String.
Чтобы подсчитывать корректно контрольную сумму нам нужно выставлять количество байт (a).
Поскольку массив может быть разной длинны и в нем может быть разное количество символов.
То есть я скажем в массив записываю данные и они разной длинны и чтобы посчитать контрольную сумму мне нужно знать количество байт
Поскольку у Вас не только символы, но и бинарная информация, проще всего завести переменную, где хранить индекс первого свободного байта (он же длина массива) и использовать его для записи данных в этот массив.
Спасибо
Проще очищать массив перед записью туда строки, а црц считать по всей длине, один фиг дальше строки будут нули, на црц ваще не влияет.