Я проанализировал дату и время от приемника GPS. И нужно, чтобы преобразовать их из строки в int
:STM32 C: atoi преобразует часть строки, которая не является аргументом
char year[4] = "2014";
char month[2] = "01";
char day[2] = "24";
char hour[2] ="12";
char minute[2] = "58";
char second[2] = "39";
GPS_current_year = atoi(year);
GPS_current_month = atoi(month);
GPS_current_day = atoi(day);
GPS_current_hour = atoi(hour);
GPS_current_minute = atoi(minute);
GPS_current_second = atoi(second);
После выполнения этих результатов являются:
Как-то часть минут строки преобразуется при преобразовании час строки. То же самое с минут и секунд.
Строки размещены бок о бок в памяти.
Если изменить последовательность определения строк, то секунд может быть добавлена года и т.д.
Вопросов:
- Что может вызвать эту ошибку?
- Есть ли способ избежать этой ошибки с использованием
atoi
?
Я знаю, что я могу преобразовать, используя цикл один char
за раз. Просто пытаюсь найти, почему это не работает.
Если эти массивы должны быть строковыми, они должны быть маленькими, поскольку вы забудете специальный символ терминатора строки. Как правило, для строк вам не нужно указывать размер, и если это так, они должны быть как минимум на один символ больше длины строки. –