【C】制作简单的时钟减法程序

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define ARGC_NUM 3
#define MAX_STR_NUM 6
#define H_AND_M_NUM 3
#define DELIMS ":"
#define M_2_S 60
#define D_2_H 24*M_2_S
int findH_M(char*str, char*h, char*m)
{    
    char* pTmp=NULL;
    int ulTmp=0;
    pTmp=strtok(str, DELIMS);
    ulTmp=strlen(pTmp);
    if (ulTmp>=H_AND_M_NUM)
    {
        printf("Error arg: %s\n", str);
        return -1;
    }
    memcpy(h, pTmp, ulTmp);
    
    pTmp=strtok(NULL, DELIMS);    
    ulTmp=strlen(pTmp);
    if (ulTmp>=H_AND_M_NUM)
    {
        printf("Error arg: %s\n", str);
        return -1;
    }
    memcpy(m, pTmp, ulTmp);
    return 0;
}

/* 只支持24小时以内的时钟减法 */
int main(int argc, char* argv[])
{
    char strBegin[MAX_STR_NUM]="";
    char strEnd[MAX_STR_NUM]="";
    char BeginH[H_AND_M_NUM]="";
    char BeginM[H_AND_M_NUM]="";
    char EndH[H_AND_M_NUM]="";
    char EndM[H_AND_M_NUM]="";
    unsigned int ulBeginTimeM=0;
    unsigned int ulEndTimeM=0;
    int BeginLen=0;
    int EndLen=0;
    if (0 == strcmp("-h", argv[1]))
    {
        printf("Useage: calcTime BeginTime EndTime \n""e.g. calcTime 18:58 19:59\n");
        return 0;
    }
    
    if (ARGC_NUM != argc)
    {
        printf("Error! argc=%d\n", argc);
        return -1;
    }
    BeginLen=strlen(argv[1]);
    EndLen=strlen(argv[2]);
    
    if ((BeginLen>=MAX_STR_NUM) || (EndLen>=MAX_STR_NUM))
    {
        printf("Error len! argv[1]=%s, argv[2]=%s\n", argv[1], argv[2]);
        return -1;
    }
    
    memcpy(strBegin, argv[1], BeginLen);
    memcpy(strEnd, argv[2], EndLen);
    
    if ((0 != findH_M(strBegin, BeginH, BeginM)) || (0 != findH_M(strEnd, EndH, EndM)))
    {
        return -1;
    }
    ulBeginTimeM=atoi(BeginH)*M_2_S+atoi(BeginM);
    ulEndTimeM=atoi(EndH)*M_2_S+atoi(EndM);
    ulEndTimeM=(ulEndTimeM>ulBeginTimeM)?(ulEndTimeM):(ulEndTimeM+D_2_H);
    printf("Congratulations! End-Begin is %d:%d\n", (ulEndTimeM-ulBeginTimeM)/M_2_S,(ulEndTimeM-ulBeginTimeM)%M_2_S);
    return 0;
}

使用方法:

X:\gcc>calcTime -h
Useage: calcTime BeginTime EndTime
e.g. calcTime 18:58 19:59

X:\gcc> calcTime 18:58 19:59
Congratulations! End-Begin is 1:1

 

转载于:https://www.cnblogs.com/caixu/p/3631970.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值