我已經從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
轉換。試圖找出它爲什麼不起作用。
如果這些數組應該是字符串,它們會變得很小,因爲您忘記了特殊的字符串結束符。一般來說,對於字符串,您不需要指定大小,如果您這樣做,它們必須至少比字符串的長度大一個字符。 –