Разбор ЧЧММСС родом из NMEA

У меня проблема с данными NMEA (gpzda). Проблема объясняется ниже.

Данные NMEA: $ GPZDA, 011856,00,17,03,2018 ,, * 61

Мой код разбора.

char hour[2] = { 0 };
for (int i=0; i < 2; i++) hour[i] = utctime[i];
info.tm_hour = atoi(hour);

char min[2] = { 0 };
for (int i=0; i < 2; i++) min[i] = utctime[i + 2];
info.tm_min = atoi(min);

char sec[2] = { 0 };
for (int i=0; i < 2; i++) sec[i] = utctime[i + 4];
info.tm_sec = atoi(sec);

cout << info.tm_year << " | " << info.tm_mon << " | " << info.tm_mday << " | " << info.tm_hour << " | " << info.tm_min << " | " << info.tm_sec << endl;

Код хорошо работает, но иногда значение часа выглядит странно, как «126». Я думал, что «6» это добавить из другой памяти. Как разобрать эти данные, чтобы хорошо работать?

2

Решение

Вы должны завершить строки нулем, поэтому объявите каждую из них размером 3.

char hour[3] = { 0 };

и так далее

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]