Как правильно проверить strptime на допустимые даты в C

Я делаю следующее, чтобы преобразовать и проверить дату, однако я не уверен, почему следующая дата продолжает проверяться как истинная.

Разве %dне будет проверять только [01,31] + ведущие нули? Есть ли лучший и более точный способ сделать это?

#include <time.h>
#include <stdio.h>
#include <stdlib.h>

int main () {
    struct tm tm; 

    char buffer [80];
    char *str = "29/Jan/2012";
    if (strptime (str, "%Y/%b/%d", &tm) == NULL)
        exit(EXIT_FAILURE);
    if (strftime (buffer,80,"%Y-%m-%d",&tm) == 0)
        exit(EXIT_FAILURE);

    printf("%s\n", buffer); // prints 29-01-20

    return 0;
}
7
задан user1024718 30 May 2012 в 03:18
поделиться