C 語言初學教材 - 第五章 回傳指向結構的指標2 範例程式碼及編譯執行

範例程式碼



#include <stdio.h>
#include <stdlib.h>
#include <time.h>

struct my_tm {
    int year;  // 現在年份
    int month; // 月份
    int day;   // 日期
    int hour;  // 二十四小時制的時
    int isam;  // 上午為非 0 值,下午為 0
    int hourt; // 十二小時制的時
    int min;   // 分
    int sec;   // 秒
};

typedef struct my_tm My_Time;

My_Time *myTimeS4(time_t seconds);

int main(void)
{
    time_t seconds = time(NULL);
    My_Time *nowPtr = myTimeS4(seconds); 
    
    printf("\n\n現在時間是西元 %d 年 %d 月 %d 日", nowPtr->year, nowPtr->month, nowPtr->day);
    printf("%s %d 點 %d 分 %d 秒\n\n", nowPtr->isam ? "上午" : "下午", nowPtr->hourt, nowPtr->min, nowPtr->sec);
    
    return 0;
}

My_Time *myTimeS4(time_t seconds)
{
    struct tm *tmPtr = localtime(&seconds);
    My_Time *mtPtr = malloc(sizeof(My_Time));
    
    mtPtr->year = tmPtr->tm_year + 1900;
    mtPtr->month = tmPtr->tm_mon + 1;
    mtPtr->day = tmPtr->tm_mday;
    mtPtr->hour = tmPtr->tm_hour;
    if (mtPtr->hour < 12 ) {
        mtPtr->isam = 1;
        mtPtr->hourt = tmPtr->tm_hour;
    }
    else {
        mtPtr->isam = 0;
        mtPtr->hourt = tmPtr->tm_hour - 12;
    }
    mtPtr->min = tmPtr->tm_min;
    mtPtr->sec = tmPtr->tm_sec;
    
    return mtPtr;
}

/* 《程式語言教學誌》的範例程式
    http://pydoing.blogspot.com/
    檔名:timetest5.c
    功能:示範結構的使用
    作者:張凱慶
    時間:西元2010年7月 */


編譯後執行,結果如下



程式說明,請繼續參考





沒有留言: