#include #include #include #include #include #define SECS_IN_DAY 86400 #define SECS_IN_YEAR 31536000 int main(int argc, char *argv[]) { time_t lEndDate = 0; time_t lStartDate = 0; char cTmp[3]; struct tm *TimePtr; int fmt_year = 0; int no_return = 0; time(&lStartDate); TimePtr = localtime(&lStartDate); time(&lEndDate); TimePtr = localtime(&lEndDate); int cntr = 1; while (cntr < argc) { if (strcmp(argv[cntr], "-s") == 0) { sprintf(cTmp, "%c%c", argv[cntr+1][2], argv[cntr+1][3]); TimePtr->tm_mday = atoi(cTmp); sprintf(cTmp, "%c%c", argv[cntr+1][0], argv[cntr+1][1]); TimePtr->tm_mon = atoi(cTmp) - 1; sprintf(cTmp, "%c%c%c%c", argv[cntr+1][4], argv[cntr+1][5],argv[cntr+1][6], argv[cntr+1][7]); TimePtr->tm_year = atoi(cTmp) - 1900; lStartDate = mktime(TimePtr); } if (strcmp(argv[cntr], "-e") == 0) { sprintf(cTmp, "%c%c", argv[cntr+1][2], argv[cntr+1][3]); TimePtr->tm_mday = atoi(cTmp); sprintf(cTmp, "%c%c", argv[cntr+1][0], argv[cntr+1][1]); TimePtr->tm_mon = atoi(cTmp) - 1; sprintf(cTmp, "%c%c%c%c", argv[cntr+1][4], argv[cntr+1][5],argv[cntr+1][6], argv[cntr+1][7]); TimePtr->tm_year = atoi(cTmp) - 1900; lEndDate = mktime(TimePtr); } cntr++; } int num_wrkday = 0; int num_weekends = 0; int total_days = 0; while (lStartDate <= lEndDate) { struct tm *pTimePtr = localtime(&lStartDate); if (pTimePtr->tm_wday != 0 && pTimePtr->tm_wday != 6) num_wrkday++; else num_weekends++; total_days++; lStartDate += SECS_IN_DAY; } printf("Number of workdays are %d, weekends = %d of %d total days\n", num_wrkday, num_weekends, total_days); return 0; }