내가 아두 이노 프로 미니의 NMEA RMC 문장에서 시간과 날짜를 포맷에 대한 char
배열에 대한 포인터를 조작 작성된 코드, 그래서 같은이 :의C, 혼란
char *UTC = "120435";
char *DATE = "050117";
char TIME[9];
char *ptr = TIME;
char *fieldPtr = UTC;
for (int a = 0; a < 8; a++) {
*ptr++ = *fieldPtr++;
if (a == 1 || a == 3) {
*ptr = ':';
ptr++;
}
}
*ptr = '\0';
Serial.print("TIME: ");
Serial.println(TIME); //output: "12:04:35" //-OK
char date[9];
ptr = date;
fieldPtr = DATE;
for (int a = 0; a < 8; a++) {
*ptr++ = *fieldPtr++;
if (a == 1 || a == 3) {
*ptr = '.';
ptr++;
}
}
*ptr = '\0';
Serial.print("TIME: ");
Serial.println(TIME); //output: "d" //whatever follows DATE
Serial.print("date: ");
Serial.println(date); //output: "05.01.17" //-OK
출력을 두 번째 라운드에서 TIME은 메모리에서 DATE 다음에 오는 문자로 보입니다.
아무도 내가 무슨 일이 일어나는지 설명해 주시겠습니까?
의'를 < 8 '오버런이 발생합니다.->'a <6' – BLUEPIXY
@BLUEPIXY,'a <7'은 후행'\ 0'을 포함합니다. –
@KeineLust'* ptr = '\ 0'; '외부 루프. – BLUEPIXY