輸出年月日時分秒的小程序

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <assert.h>
#define LEN 32
typedef unsigned int ui;
typedef struct {
        char year[LEN];
        char month[LEN];
        char day[LEN];
        char hour[LEN];
        char min[LEN];
        char sec[LEN];
} time_val;//字符型的time_val結構體

typedef struct {
        ui iYear;
        ui iMonth;
        ui iDay;
        ui iHour;
        ui iMin;
        ui iSec;
} int_time;//轉unsigned int後的int_time結構體

void store_format_time(time_val *tt, char *format_time){//保存stdin中的格式化時間類型到 time_val 中
        time_val *t = tt;
        char *temp = format_time;
        strncpy(t->year  , temp   , 4);
        strncpy(t->month , temp+=5, 2);
        strncpy(t->day   , temp+=3, 2);
        strncpy(t->hour  , temp+=3, 2);
        strncpy(t->min   , temp+=3, 2);
        strncpy(t->sec   , temp+=3, 2);
}

void math_time(int_time it, ui math_sec){//這個函數並沒有很完整,我只寫了增加一個秒數,並且只判斷到了 分 ,後面我會繼續改進的
        ui res_sec = math_sec + it.iSec;
        it.iSec = (res_sec/60 > 0)?(res_sec%60):res_sec;
        it.iMin = ((res_sec/60 + it.iMin)/60 > 0)?((res_sec/60 + it.iMin)%60):(res_sec/60 + it.iMin);
        printf("%4d-%02d-%02d %02d:%02d:%02d\n", it.iYear, it.iMonth, it.iDay, it.iHour, it.iMin, it.iSec);
}

int_time to_int(time_val *tt){//time_val結構體  轉 int_time類型
        int_time it;
        it.iYear  = atoi(tt->year);
        it.iMonth = atoi(tt->month);
        it.iDay   = atoi(tt->day);
        it.iHour  = atoi(tt->hour);
        it.iMin   = atoi(tt->min);
        it.iSec   = atoi(tt->sec);
        return it;
}

int main(int argc, char *argv[]){
        time_val *t = (time_val *)malloc(sizeof(time_val));
        int_time it;
        assert(t);
        char time_v[128];
        printf("Format time type is 2011-07-05 13:22:00\n");
        printf("Please input time:");
        gets(time_v);
        store_format_time(t, time_v);
        to_int(t);
        it = to_int(t);
        math_time(it, 40);
        free(t);
}

主要還是寫代碼寫少了,最近準備專攻一下語法了,一直都在瞭解底層..

解釋一下,註釋怎麼貼不上??發了個克的...

time_val;//字符型的time_val結構體,用來接收.

int_time;//用來接收  轉unsigned int後的int_time結構體

store_format_time()//用來保存stdin中的格式化時間類型到 time_val 中

math_time()//這個函數並沒有很完整,我只寫了增加一個秒數,並且只判斷到了 分,後面可能,可能吧,可能再跟進一下,哈哈!

to_int()//time_val結構體 轉 int_time類型

看一下執行結果:

[root@kevin /tmp]$./a.out 
Format time type is 2011-07-05 13:22:00
Please input time:2010-02-12 14:20:30
2010-02-12 14:21:10

默認加了40秒

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章