Код: Выделить всё
strftimeКод: Выделить всё
time.h:
#include
#include
#include
#include
int main()
{
//This is where date & time will be stored
char buffer[10];
// Set Japanese locale for LC_TIME
//Just an example, japanese takes 33 bytes. But the buffer I provided is of 10 bytes
// Installing japanese locale is another effort. So, instead of japanese you can try it by commenting the below setlocale. As even english date & time needs more space than 10.
setlocale(LC_TIME, "ja_JP.UTF-8");
// Initialize struct tm with some value, in this case September 26, 2025, at 12:27:05 PM
struct tm tm1 = {
.tm_sec = 5,
.tm_min = 27,
.tm_hour = 12,
.tm_mday = 26,
.tm_mon = 8,
.tm_year = 125,
.tm_wday = 5,
.tm_yday = 268,
.tm_isdst = 1
};
//In this case, len will be 0.
size_t len = strftime(buffer, sizeof(buffer), "%x %X", &tm1);
//From here, I want to send some error to my application which expects and throws an error to terminal, based on errno.h.
//ERANGE or EOVERFLOW or any other
}
Код: Выделить всё
strftimeКод: Выделить всё
rtnValue. Если все пойдет хорошо, storeInДля разных языков требуются разные размеры буфера. Однако бывают случаи, когда дата и время для данной локали могут превышать размер, указанный параметром
Код: Выделить всё
len. Эту проблему можно смягчить, предоставив буфер большего размера, но также необходима правильная обработка ошибок.
strftimeКод: Выделить всё
ERANGE или EOVERFLOW. Вместо этого он возвращает 0Код: Выделить всё
errno.h. Я путаюсь между ERANGE и EOVERFLOWКод: Выделить всё
EOVERFLOWКод: Выделить всё
ERANGEВопрос:
Какой код ошибки будет наиболее подходящим для такой ситуации?
Заранее спасибо.
Подробнее здесь: https://stackoverflow.com/questions/798 ... -eoverflow
Мобильная версия