Перевод цифровых символов в формат даты - C (СИ)
Формулировка задачи:
Дана строка из восьми цифровых символов. переведите
его в формат даты "dd - mm - yyyy" и проверьте корректность такой
даты.
Решение задачи: «Перевод цифровых символов в формат даты»
textual
Листинг программы
#include<stdio.h>
#include<conio.h>
#include <time.h>
#include <string.h>
#include <stdlib.h>
void main()
{ char bf[8];
struct tm _tm;
memset(&_tm,NULL, sizeof(_tm));
cputs(" Введите дату[ddmmyyyy]:");
gets(bf);
_tm.tm_year = atoi(&bf[4]); bf[4] = 0;
_tm.tm_mon = atoi(&bf[2]); bf[2] = 0;
_tm.tm_mday = atoi(&bf);
printf("Получили %2d-%2d-%4d\n\r", _tm.tm_mday,_tm.tm_mon ,_tm.tm_year);
_tm.tm_year = _tm.tm_year - 1900;
_tm.tm_mon--;
printf("Проверка: %s", asctime(&_tm));
getch();
};
Объяснение кода листинга программы
В этом коде происходит следующее:
- Включаются необходимые заголовочные файлы:
stdio.h- для работы с стандартными вводом/выводом;conio.h- для работы с функциейgetch(), которая используется для приостановки выполнения программы до тех пор, пока пользователь не введет данные;time.h- для работы со структуройtm, используемой для представления даты и времени;string.h- для работы с функциейmemset(), которая используется для очистки памяти;stdlib.h- для работы с функциейatoi(), которая используется для преобразования строки в целое число.
- Создается пустая строка размером 8 символов для хранения введенной пользователем даты.
- Структура tm инициализируется значением по умолчанию - в данном случае, пустой датой.
- Выводится приглашение для ввода даты.
- Пользователь вводит дату в формате ddmmyyyy.
- Переменные tm.tm_year, tm.tm_mon и tm.tm_mday инициализируются значениями соответствующих полей введенной даты.
- Выводится дата в формате dd-mm-yyyy.
- Для переменной tm.tm_year вычитается 1900, для tm.tm_mon - вычитается единица, для tm.tm_mday - изменений не происходит.
- Выводится проверка в виде строки, представляющей дату в формате ISO 8601.
- Программа ожидает нажатия клавиши. Обратите внимание, что ввод даты в формате ddmmyyyy может вызвать путаницу, поскольку в этом формате день, месяц и год расположены в обратном порядке по сравнению с общепринятым форматом.