#include <stdio.h> #include <stdlib.h> #include <malloc.h> #include <string.h> typedef struct tagXDate { int year; int month; int day; }XDate; bool GetCompileDate(XDate* date) { bool succeed=true; char* complieDate=(char*)malloc(strlen(__DATE__)+1); strcpy_s(complieDate,strlen(__DATE__)+1,__DATE__); char* context; char* month=strtok_s(complieDate," ",&context); char* day=strtok_s(0," ",&context); char* year=strtok_s(0," ",&context); date->day=atoi(day); if (date->day==0) { succeed=false; goto cleanup; } date->year=atoi(year); if (date->year==0) { succeed=false; goto cleanup; } const char months[][4]={"Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"}; date->month=0; for (int i=0;i<12;i++) { if (strcmp(month,months[i])==0) { date->month=i+1; break; } } if (date->month==0) { succeed=false; goto cleanup; } cleanup: free(complieDate); return succeed; } int main() { XDate date; if (!GetCompileDate(&date)) { return -1; } printf("%04d年%02d月%02d日/n",date.year,date.month,date.day); return 0; }