С++ обрезать массив символов
У меня есть массив символов длиной 10. Он заполняется непредсказуемым количеством символов, обычно до 6.
char charDummy[10] = "";
Когда я объединяю массив символов с другим, я получаю пробелы, которые нежелательны при последующем анализе.
char postStr[300] = "";
strcat(postStr, "&field1=");
strcat(postStr,dtostrf(rain05m,6,2,charDummy));
Как напрямую обрезать массив символов?
Обходной путь: прокрутите массив и скопируйте допустимые символы в новый массив символов с идеальным количеством строк. Из-за нехватки памяти мне нужно быть осторожным с количеством создаваемых переменных.
@tony gil, 👍0
1 ответ
Лучший ответ:
Ваша проблема в том, что dtostrf()
выравнивает значение по правому краю в отведенном ему пространстве. Простой ответ — указать вместо этого выравнивание по левому краю:
Преобразование выполняется в формате "[-]d.ddd". Минимальная ширина поля выходной строки (включая возможный «.» и возможный знак для отрицательных значений) задается шириной, а prec определяет количество цифр после десятичного знака. Ширина – значение со знаком, отрицательное для регулировки по левому краю.
Руководство по AVR LIBC
Итак, просто сделайте ширину отрицательной, и она будет выровнена по левому краю.
- C++ против языка Arduino?
- Как использовать SPI на Arduino?
- Какие накладные расходы и другие соображения существуют при использовании структуры по сравнению с классом?
- Ошибка: expected unqualified-id before 'if'
- Что лучше использовать: #define или const int для констант?
- Функции со строковыми параметрами
- Библиотека DHT.h не импортируется
- ошибка: ожидаемое первичное выражение перед токеном ','
@tony gil: Ограничитель строки (ASCII
0
) не имеет ничего общего сNULL
и никогда не упоминается какNULL
.NULL
— совершенно другая, не связанная вещь в C и C++., @AnT