В настоящее время это 10 апреля 2020 года. Я сделал функцию конвертации целочисленного месяца в строковый месяц в C. Он принимает целое число и возвращает строку. Почему-то думает, что это март . Я выяснил, является ли проблема моим конвертером или чем-то еще, я распечатал myTime->tm_mon
, и он вернул 2
(март), когда он должен вернуть 3
(апрель). Может ли кто-нибудь найти (что я предполагаю) мою ошибку и указать мне?
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
typedef struct tm tm;
void *numberToLetters(int month) {
char *smonth;
switch (month) {
case (0):
smonth = "January";
break;
case (1):
smonth = "February";
break;
case (2):
smonth = "March";
break;
case (3):
smonth = "April";
break;
case (4):
smonth = "May";
break;
case (5):
smonth = "June";
break;
case (6):
smonth = "July";
break;
case (7):
smonth = "August";
break;
case (8):
smonth = "September";
break;
case (9):
smonth = "October";
break;
case (10):
smonth = "November";
break;
case (11):
smonth = "December";
break;
default:
return NULL;
}
return smonth;
}
int main() {
time_t present;
time(&present);
tm *myTime = &present;
void *month = (char *)numberToLetters(myTime->tm_mon);
printf("%s\n", month);
return 0;
}