#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=;
pTmp=strtok(str, DELIMS);
ulTmp=strlen(pTmp);
if (ulTmp>=H_AND_M_NUM)
{
printf("Error arg: %s\n", str);
return -;
}
memcpy(h, pTmp, ulTmp); pTmp=strtok(NULL, DELIMS);
ulTmp=strlen(pTmp);
if (ulTmp>=H_AND_M_NUM)
{
printf("Error arg: %s\n", str);
return -;
}
memcpy(m, pTmp, ulTmp);
return ;
} /* 只支持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=;
unsigned int ulEndTimeM=;
int BeginLen=;
int EndLen=;
if ( == strcmp("-h", argv[]))
{
printf("Useage: calcTime BeginTime EndTime \n""e.g. calcTime 18:58 19:59\n");
return ;
} if (ARGC_NUM != argc)
{
printf("Error! argc=%d\n", argc);
return -;
}
BeginLen=strlen(argv[]);
EndLen=strlen(argv[]); if ((BeginLen>=MAX_STR_NUM) || (EndLen>=MAX_STR_NUM))
{
printf("Error len! argv[1]=%s, argv[2]=%s\n", argv[], argv[]);
return -;
} memcpy(strBegin, argv[], BeginLen);
memcpy(strEnd, argv[], EndLen); if (( != findH_M(strBegin, BeginH, BeginM)) || ( != findH_M(strEnd, EndH, EndM)))
{
return -;
}
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 ;
}

使用方法:

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

【C】制作简单的时钟减法程序的更多相关文章

  1. 使用exe4j工具制作简单的java应用程序

    首先需要下载exe4j工具并进行安装,下面是利用exe4j工具制作应用程序的步骤. 1.首先将工程导出为可运行的jar包,选择extract required libralies into gener ...

  2. 制作简单的WPF时钟

    原文:制作简单的WPF时钟 在很早之前,我曾经写过一个GDI+的时钟,见"C#时钟控件 (C# Clock Control)" http://blog.csdn.net/johns ...

  3. MFC制作简单通讯录程序

    学习c++和MFC一段时间了,苦于没有项目实战,所以自己写了一个简单的简单通讯录程序,以前用c#写简单很多,例程是这本书上的实例,我的第一个winform程序也是从这本书上学的,总结c#写的话更简单, ...

  4. 基于OpenCV制作道路车辆计数应用程序

    基于OpenCV制作道路车辆计数应用程序 发展前景 随着科学技术的进步和工业的发展,城市中交通量激增,原始的交通方式已不能满足要求:同时,由于工业发展为城市交通提供的各种交通工具越来越多,从而加速了城 ...

  5. ZAM 3D 制作简单的3D字幕 流程(二)

    原地址:http://www.cnblogs.com/yk250/p/5663907.html 文中表述仅为本人理解,若有偏差和错误请指正! 接着 ZAM 3D 制作简单的3D字幕 流程(一) .本篇 ...

  6. WPF制作的小时钟

    原文:WPF制作的小时钟 周末无事, 看到WEB QQ上的小时钟挺可爱的, 于是寻思着用WPF模仿着做一个. 先看下WEB QQ的图: 打开VS, 开始动工. 建立好项目后, 面对一个空荡荡的页面, ...

  7. c#制作简单启动画面的方法

    本文实例讲述了c#制作简单启动画面的方法.分享给大家供大家参考.具体分析如下: 启动画面是程序启动加载组件时一个让用户稍微耐心等待的提示框.一个好的软件在有启动等待需求时必定做一个启动画面.启动画面可 ...

  8. Highcharts使用教程(1):制作简单图表

    今天我们要使用JavaScript图表Highcharts制作简单的柱形图,我们已经安装好Highcharts,让我们开始制作图表吧. 步骤一 在网页中添加一个div.设置id,设置图表长.高.代码如 ...

  9. 一个简单的P2P传输程序

    写了一个简单的P2P传输程序,在P2P的圈子中传输文件,不过为了简便,这个程序没有真正的传输文件,只是简单的判断一下文件的位置在哪里.这个程序可以处理当有一个peer闪退的情况,在这种情况下,剩下的p ...

随机推荐

  1. 收集C#常用类:自己写的一个DBHelper类

    随着学的东西越来越多,一点点的完善吧! using System; using System.Collections.Generic; using System.Linq; using System. ...

  2. 原生javascript实现省市区三级联动

    腾讯IP分享计划(http://ip.qq.com/)有个现成的三级联动功能,查看源码后发现可以直接使用其单独的JS文件(http://ip.qq.com/js/geo.js). 分析后发现自己需要写 ...

  3. 《精通C#》第十三章 对象的生命周期

    在C#中,程序员无法直接在C#中删除一个托管对象,因为C#不提供这个功能,那么类的实例就需要通过CLR调用垃圾回收机制进行清除,回收内存..NET垃圾回收器会压缩空的内存块来实现优化,为了辅助这一功能 ...

  4. ASP.NET MVC多表单提交

    多表单提交需要写清路径,以便主程序可以找到 方法一:直接写路径, action="~/Home/other1"   "~"表示从根目录开始 方法2:@using ...

  5. spring.net 配置文件需要注意换行问题

    今天在做Spring.NET Demo时写配置文件写ObjectNames 节点的Value成这样 <object id="ProxyCreator" type=" ...

  6. 本地hosts临时域名访问

    当刚购买了空间,域名和空间还未进行绑定,可以用临时域名访问主机调试网站.您可通过本地hosts指向访问网站,具体方法如下: 特别说明:设置以后,只有当前设置的电脑才能访问,其他电脑访问无效. 第一步: ...

  7. 16083001(古墓丽影GPA)

    [目标] 编译UNREALPORJECT2工程 [思路] 1 2 3 一件衣服23932个面 vs: // // Generated by Microsoft (R) HLSL Shader Comp ...

  8. Dom4j解析xml

    public class Dom4jTest { // Dom4j解析xml // 因为所有的方法都需要Dom树 static Document document = null; static Ele ...

  9. python 邮件

    1:文件形式的邮件 01.#!/usr/bin/env python3 02.#coding: utf-8 03.import smtplib 04.from email.mime.text impo ...

  10. pwnable.kr-flag

    题目: 使用 file 命令查看下载回来的 flag 文件,发现是一个64位的 ELF 可执行程序.通过查看,发现其具有明显的 UPX 压缩标志,所以解压之. 使用命令upx –d 进行脱壳,如果没有 ...