У меня есть функция для добавления любых минут к дате в C, используя struct tm и maketime.функция принимает время даты в строке и минуты в целых числах, затем добавляет минуты к времени даты и затем возвращает строку.
char *addMinutes(char *dateTime, int mins)
{
/* Intput & Output: YYYYMMDDHHMM */
char year[5];
char month[3];
char day[3];
char HH[3];
char MM[3];
char newDateTime[13];
struct tm t;
STRMCPY(year, dateTime, 4);
STRMCPY(month, &dateTime[4], 2);
STRMCPY(day, &dateTime[6], 2);
STRMCPY(HH, &dateTime[8], 2);
STRMCPY(MM, &dateTime[10],2);
printf("input %s %s %s %s %s\n",year,month,day,HH,MM);
t.tm_year = atoi(year);
t.tm_mon = atoi(month)-1;
t.tm_mday = atoi(day);
t.tm_hour = atoi(HH);
t.tm_min = atoi(MM)+mins;
printf("input %d %d %d %d %d\n",t.tm_year,t.tm_mon,t.tm_mday,t.tm_hour,t.tm_min);
mktime(&t);
printf("input %d %d %d %d %d\n",t.tm_year,t.tm_mon,t.tm_mday,t.tm_hour,t.tm_min);
sprintf(newDateTime, "%04d%02d%02d%02d%02d", t.tm_year, t.tm_mon,
t.tm_mday,t.tm_hour,t.tm_min);
return newDateTime;
}
Ниже приведен мой результат, если я вызову вышеуказанную функцию strcpy (atb30, addMinutes ("201812120431 ", 30));
input 2018 12 12 04 31
input 2018 11 12 4 61
input 2018 11 12 5 41
atb 201811120541
Я не понимаю, почему моя программа не работает.И как правильно написать функцию addMinutes, используя C.