Переменная и результат функции
- Войдите на сайт для отправки комментариев
Сб, 01/02/2014 - 18:16
Есть такая функция для преобразования даты в строку, но работает она один раз. (из-за особенностей сишника)
char* DateTime::format(char* format) {
char* ret = format;
for(int i=0;i<strlen(ret)-1;i++){
if(ret[i] == 'h'){
ret[i] = '0'+hh/10;
ret[i+1] = '0'+hh%10;
}
if(ret[i] == 'm'){
ret[i] = '0'+mm/10;
ret[i+1] = '0'+mm%10;
}
if(ret[i] == 's'){
ret[i] = '0'+ss/10;
ret[i+1] = '0'+ss%10;
}
if(ret[i] == 'D'){
ret[i] = '0'+d/10;
ret[i+1] = '0'+d%10;
}
if(ret[i] == 'M'){
ret[i] = '0'+m/10;
ret[i+1] = '0'+m%10;
}
if(ret[i] == 'Y'){
ret[i] = '0'+yOff/10;
ret[i+1] = '0'+yOff%10;
}
}
return ret;
}
Как сделать чтобы входная переменная не трогалась(константой чтоль сделать).
Как сделать чтобы входная переменная не трогалась(константой чтоль сделать).
передать буфер, куда записывать результат.
Пробовал - непомогает.
char buf[] = "hh:mm:ss DD-MM-YY"; Serial.println(now.format(buf));Пробовал - непомогает.
char buf[] = "hh:mm:ss DD-MM-YY"; Serial.println(now.format(buf));Неправильно пробовал. То, что ты написал -- ничего не меняет.
А что за класс DateTime, у которого такая функция форматирования?
Это я допиливаю класс библиотеки RTClib - как мне нужно и чтобы коду минимум. Вроде получилось.
char* DateTime::format(char* ret){ for(int i=0;i<strlen(ret)-1;i++){ if(ret[i] == 'h'){ ret[i] = '0'+hh/10; ret[i+1] = '0'+hh%10; } if(ret[i] == 'm'){ ret[i] = '0'+mm/10; ret[i+1] = '0'+mm%10; } if(ret[i] == 's'){ ret[i] = '0'+ss/10; ret[i+1] = '0'+ss%10; } if(ret[i] == 'D'){ ret[i] = '0'+d/10; ret[i+1] = '0'+d%10; } if(ret[i] == 'M'){ ret[i] = '0'+m/10; ret[i+1] = '0'+m%10; } if(ret[i] == 'Y'){ ret[i] = '0'+yOff/10; ret[i+1] = '0'+yOff%10; } } return ret; }И использую так
Вобщем програмируя на Java, Python, PHP отвыкаешь от языковых мелочей. Да и в гугл не написать сходу правильный запрс. И помогать никто не хочет...
Это я допиливаю класс библиотеки RTClib - как мне нужно и чтобы коду минимум. Вроде получилось.
А, ну так неудачно ты дописываешь.