С++ обрезать массив символов

c++

У меня есть массив символов длиной 10. Он заполняется непредсказуемым количеством символов, обычно до 6.

char charDummy[10] = "";

Когда я объединяю массив символов с другим, я получаю пробелы, которые нежелательны при последующем анализе.

char postStr[300] = "";
strcat(postStr, "&field1=");
strcat(postStr,dtostrf(rain05m,6,2,charDummy));

Как напрямую обрезать массив символов?

Обходной путь: прокрутите массив и скопируйте допустимые символы в новый массив символов с идеальным количеством строк. Из-за нехватки памяти мне нужно быть осторожным с количеством создаваемых переменных.

, 👍0


1 ответ


Лучший ответ:

3

Ваша проблема в том, что dtostrf() выравнивает значение по правому краю в отведенном ему пространстве. Простой ответ — указать вместо этого выравнивание по левому краю:

Преобразование выполняется в формате "[-]d.ddd". Минимальная ширина поля выходной строки (включая возможный «.» и возможный знак для отрицательных значений) задается шириной, а prec определяет количество цифр после десятичного знака. Ширина – значение со знаком, отрицательное для регулировки по левому краю.

Руководство по AVR LIBC

Итак, просто сделайте ширину отрицательной, и она будет выровнена по левому краю.

,

@tony gil: Ограничитель строки (ASCII 0) не имеет ничего общего с NULL и никогда не упоминается как NULL. NULL — совершенно другая, не связанная вещь в C и C++., @AnT