解析HHMMSS来自NMEA

时间:2018-01-17 01:24:08

标签: c++ parsing 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”是从另一个记忆中添加的。如何解析这些数据以便很好地工作?

1 个答案:

答案 0 :(得分:1)

你应该零终止你的字符串,所以声明每个字符串的大小为3。

char hour[3] = { 0 };

等等