У меня проблема с данными 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» это добавить из другой памяти. Как разобрать эти данные, чтобы хорошо работать?
Вы должны завершить строки нулем, поэтому объявите каждую из них размером 3.
char hour[3] = { 0 };
и так далее
Других решений пока нет …