Я пытаюсь добавить дату пользовательского ввода в существующую структуру времени, но получаю сообщение об ошибке, которое не понимаю. Компилятор говорит мне, что день недели выходит за рамки, когда я пытаюсь изменить дату месяца. Код размещен ниже.
struct tm date;
int m, d, y, n;
char buffer[80];
printf("Enter a date in mm/dd/yyyy format.\n");
scanf("%d/%d/%d", &m, &d, &y);
date.tm_mday = d;
date.tm_mon = m;
date.tm_year = y - 1900;
mktime(&date);
printf("How many days would you like to advance this time?");
scanf("%d", &n);
date.tm_mday += n;
mktime(&date);
strftime(buffer, sizeof(buffer), "%c", &date);
printf("Your new date is %c", buffer);
struct tm date;
, что вы никогда не удосужились установить какое-либо определенное значение? Некоторые игнорируютсяmktime
; некоторые нет. Ожидаете ли вы, чтоmktime
каким-то образом догадается, что эти значения не были установлены вами до вызова? - person WhozCraig   schedule 03.12.2018struct tm
в 0:struct tm date = { 0 };
. В настоящий момент вы используете неопределенные значения для временных компонентов структуры. Вы также должны проверить, что вызовыscanf()
сработали — вернули правильное количество значений (3 и 1 соответственно). Вы можете протестировать вызовыmktime()
; вы можете печатать значенияdate
после каждого вызоваmktime()
. Вы уверены, что компилятор жалуется? - person Jonathan Leffler   schedule 03.12.2018