亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? strftime.c

?? C標準庫源代碼,能提高對C的理解,不錯的哦
?? C
?? 第 1 頁 / 共 3 頁
字號:
/***
*strftime.c - String Format Time
*
*       Copyright (c) 1988-1997, Microsoft Corporation. All rights reserved.
*
*Purpose:
*
*******************************************************************************/

#ifdef _MAC
#define _WLM_NOFORCE_LIBS
#include <windows.h>
#ifdef _WIN32
#undef  _WIN32  /* windows.h should NOT set _WIN32 */
#endif  /* _WIN32 */
/* The following two TYPEDEFs are NOT defined in <windows.h> for the Mac */
typedef DWORD LCTYPE;           /* from windows.h */
typedef int mbstate_t;          /* from wchar.h */
#endif  /* _MAC */

#include <cruntime.h>
#include <internal.h>
#include <mtdll.h>
#include <time.h>
#include <locale.h>
#include <setlocal.h>
#include <ctype.h>
#include <stdlib.h>
#include <string.h>
#include <xlocinfo.h>

/* Prototypes for local routines */
static void __cdecl _expandtime (char specifier, const struct tm *tmptr,
        char **out, size_t *count, struct __lc_time_data *lc_time);
static void __cdecl _store_str (char *in, char **out, size_t *count);
static void __cdecl _store_num (int num, int digits, char **out, size_t *count);
static void __cdecl _store_number (int num, char **out, size_t *count);
static void __cdecl _store_winword (const char *format, const struct tm *tmptr, char **out, size_t *count, struct __lc_time_data *lc_time);


/* LC_TIME data for local "C" */

__declspec(selectany) struct __lc_time_data __lc_time_c = {

        {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"},

        {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday",
                "Friday", "Saturday", },

        {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug",
                "Sep", "Oct", "Nov", "Dec"},

        {"January", "February", "March", "April", "May", "June",
                "July", "August", "September", "October",
                "November", "December"},

        {"AM", "PM"}

        , { "M/d/yy" }
        , { "dddd, MMMM dd, yyyy" }
        , { "H:mm:ss" }
        };

/* Pointer to the current LC_TIME data structure. */

struct __lc_time_data *__lc_time_curr = &__lc_time_c;

/* Flags */
unsigned __alternate_form;
unsigned __no_lead_zeros;

#define TIME_SEP        ':'

/*      get a copy of the current day names */
char * __cdecl _Getdays (
        void
        )
{
        const struct __lc_time_data *pt = __lc_time_curr;
        size_t n, len = 0;
        char *p;

        for (n = 0; n < 7; ++n)
                len += strlen(pt->wday_abbr[n]) + strlen(pt->wday[n]) + 2;
        p = (char *)malloc(len + 1);

        if (p != 0) {
                char *s = p;

                for (n = 0; n < 7; ++n) {
                        *s++ = TIME_SEP;
                        s += strlen(strcpy(s, pt->wday_abbr[n]));
                        *s++ = TIME_SEP;
                        s += strlen(strcpy(s, pt->wday[n]));
                }
                *s++ = '\0';
        }

        return (p);
}

/*      get a copy of the current month names */
char * __cdecl _Getmonths (
        void
        )
{
        const struct __lc_time_data *pt = __lc_time_curr;
        size_t n, len = 0;
        char *p;

        for (n = 0; n < 12; ++n)
                len += strlen(pt->month_abbr[n]) + strlen(pt->month[n]) + 2;
        p = (char *)malloc(len + 1);

        if (p != 0) {
                char *s = p;

                for (n = 0; n < 12; ++n) {
                        *s++ = TIME_SEP;
                        s += strlen(strcpy(s, pt->month_abbr[n]));
                        *s++ = TIME_SEP;
                        s += strlen(strcpy(s, pt->month[n]));
                }
                *s++ = '\0';
        }

        return (p);
}

/*      get a copy of the current time locale information */
void * __cdecl _Gettnames (
        void
        )
{
        const struct __lc_time_data *pt = __lc_time_curr;
        size_t n, len = 0;
        void *p;

        for (n = 0; n < 7; ++n)
                len += strlen(pt->wday_abbr[n]) + strlen(pt->wday[n]) + 2;
        for (n = 0; n < 12; ++n)
                len += strlen(pt->month_abbr[n]) + strlen(pt->month[n]) + 2;
        len += strlen(pt->ampm[0]) + strlen(pt->ampm[1]) + 2;
        len += strlen(pt->ww_sdatefmt) + 1;
        len += strlen(pt->ww_ldatefmt) + 1;
        len += strlen(pt->ww_timefmt) + 1;
        p = malloc(sizeof (*pt) + len);

        if (p != 0)
                {struct __lc_time_data *pn = (struct __lc_time_data *)p;
                char *s = (char *)p + sizeof (*pt);

                memcpy(p, __lc_time_curr, sizeof (*pt));
                for (n = 0; n < 7; ++n)
                        {pn->wday_abbr[n] = s;
                        s += strlen(strcpy(s, pt->wday_abbr[n])) + 1;
                        pn->wday[n] = s;
                        s += strlen(strcpy(s, pt->wday[n])) + 1; }
                for (n = 0; n < 12; ++n)
                        {pn->month_abbr[n] = s;
                        s += strlen(strcpy(s, pt->month_abbr[n])) + 1;
                        pn->month[n] = s;
                        s += strlen(strcpy(s, pt->month[n])) + 1; }
                pn->ampm[0] = s;
                s += strlen(strcpy(s, pt->ampm[0])) + 1;
                pn->ampm[1] = s;
                s += strlen(strcpy(s, pt->ampm[1])) + 1;
                pn->ww_sdatefmt = s;
                s += strlen(strcpy(s, pt->ww_sdatefmt)) + 1;
                pn->ww_ldatefmt = s;
                s += strlen(strcpy(s, pt->ww_ldatefmt)) + 1;
                pn->ww_timefmt = s; }

        return (p);
}


/***
*size_t strftime(string, maxsize, format, timeptr) - Format a time string
*
*Purpose:
*       Place characters into the user's output buffer expanding time
*       format directives as described in the user's control string.
*       Use the supplied 'tm' structure for time data when expanding
*       the format directives.
*       [ANSI]
*
*Entry:
*       char *string = pointer to output string
*       size_t maxsize = max length of string
*       const char *format = format control string
*       const struct tm *timeptr = pointer to tb data structure
*
*Exit:
*       !0 = If the total number of resulting characters including the
*       terminating null is not more than 'maxsize', then return the
*       number of chars placed in the 'string' array (not including the
*       null terminator).
*
*       0 = Otherwise, return 0 and the contents of the string are
*       indeterminate.
*
*Exceptions:
*
*******************************************************************************/

size_t __cdecl strftime (
        char *string,
        size_t maxsize,
        const char *format,
        const struct tm *timeptr
        )
{
        return (_Strftime(string, maxsize, format, timeptr, 0));
}

/***
*size_t _Strftime(string, maxsize, format,
*       timeptr, lc_time) - Format a time string for a given locale
*
*Purpose:
*       Place characters into the user's output buffer expanding time
*       format directives as described in the user's control string.
*       Use the supplied 'tm' structure for time data when expanding
*       the format directives. use the locale information at lc_time.
*       [ANSI]
*
*Entry:
*       char *string = pointer to output string
*       size_t maxsize = max length of string
*       const char *format = format control string
*       const struct tm *timeptr = pointer to tb data structure
*               struct __lc_time_data *lc_time = pointer to locale-specific info
*                       (passed as void * to avoid type mismatch with C++)
*
*Exit:
*       !0 = If the total number of resulting characters including the
*       terminating null is not more than 'maxsize', then return the
*       number of chars placed in the 'string' array (not including the
*       null terminator).
*
*       0 = Otherwise, return 0 and the contents of the string are
*       indeterminate.
*
*Exceptions:
*
*******************************************************************************/

size_t __cdecl _Strftime (
        char *string,
        size_t maxsize,
        const char *format,
        const struct tm *timeptr,
                void *lc_time_arg
        )
{
        struct __lc_time_data *lc_time = lc_time_arg == 0 ? __lc_time_curr
            : (struct __lc_time_data *)lc_time_arg;

        size_t left;                    /* space left in output string */
#ifdef _MT
        int local_lock_flag;
#endif  /* _MT */

        /* Copy maxsize into temp. */
        left = maxsize;

        _lock_locale( local_lock_flag )

        /* Copy the input string to the output string expanding the format
        designations appropriately.  Stop copying when one of the following
        is true: (1) we hit a null char in the input stream, or (2) there's
        no room left in the output stream. */

        while (left > 0)
        {
                switch(*format)
                {

                case('\0'):

                        /* end of format input string */
                        goto done;

                case('%'):

                        /* Format directive.  Take appropriate action based
                        on format control character. */

                        format++;                       /* skip over % char */

                        /* process flags */
                        __alternate_form = 0;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区三区精品| 国产精品日日摸夜夜摸av| 亚洲成a人v欧美综合天堂下载| 色欧美乱欧美15图片| 亚洲自拍欧美精品| 91精品国产综合久久精品app| 青娱乐精品视频在线| 精品少妇一区二区三区免费观看| 国内成人免费视频| 中文字幕一区二区三区不卡在线| 色偷偷久久一区二区三区| 亚洲高清不卡在线| 日韩一区二区在线观看| 国产成人在线观看| 亚洲自拍另类综合| 欧美va亚洲va香蕉在线| 国产v综合v亚洲欧| 亚洲一区av在线| 精品国产欧美一区二区| 99国产精品久久久久久久久久 | 青椒成人免费视频| 精品粉嫩超白一线天av| proumb性欧美在线观看| 香蕉av福利精品导航| 久久嫩草精品久久久久| 色综合中文综合网| 国产精品美女www爽爽爽| 在线观看av不卡| 国产麻豆精品95视频| 亚洲欧美国产高清| 欧美一区二区三区播放老司机| 国产在线国偷精品产拍免费yy| 亚洲视频你懂的| 欧美mv和日韩mv的网站| 色狠狠一区二区三区香蕉| 久久99久久99小草精品免视看| 国产精品伦理在线| 日韩精品资源二区在线| 一本色道久久加勒比精品| 久久99精品久久久| 一个色综合av| 中文字幕 久热精品 视频在线| 欧美日韩国产123区| 成人精品国产福利| 老司机精品视频在线| 亚洲精品中文字幕在线观看| 精品国产一区二区三区久久影院| 在线亚洲免费视频| 成人在线视频一区二区| 日本在线观看不卡视频| 亚洲综合精品自拍| 国产精品不卡在线观看| 欧美va亚洲va在线观看蝴蝶网| 在线免费观看日韩欧美| www.日韩在线| 韩国在线一区二区| 蜜臀精品久久久久久蜜臀| 亚洲综合在线观看视频| 国产精品伦理在线| 欧美激情一区在线| 国产人久久人人人人爽| 亚洲精品在线观| 欧美久久一二三四区| 欧洲一区在线电影| 色婷婷亚洲综合| 色综合久久中文综合久久牛| www.亚洲国产| 99精品国产一区二区三区不卡| 国产精品亚洲第一区在线暖暖韩国 | 亚洲一区二区三区影院| 亚洲欧美激情一区二区| 国产精品美女一区二区| 国产精品麻豆网站| 国产精品久久久久久户外露出| 久久久精品黄色| 久久人人超碰精品| 国产亚洲一区二区三区在线观看 | 中文av字幕一区| 国产日产欧美一区| 中文字幕不卡在线观看| 久久婷婷久久一区二区三区| 精品国产一二三| 久久久久久久综合日本| 国产欧美一二三区| 国产精品久线在线观看| 日韩一区欧美小说| 亚洲精品成人少妇| 亚洲成人你懂的| 免费成人av资源网| 国产一区中文字幕| 成人精品一区二区三区四区 | 亚洲在线视频免费观看| 香蕉影视欧美成人| 精品系列免费在线观看| 国产在线观看免费一区| 成人av在线影院| 色88888久久久久久影院按摩 | 欧美xxxx在线观看| 久久久久久久久久电影| 国产精品国产a| 亚洲一二三区在线观看| 美女视频第一区二区三区免费观看网站| 免费高清不卡av| 成人av午夜影院| 欧美色爱综合网| 精品国精品国产尤物美女| 久久久99久久| 亚洲午夜视频在线| 国产九色sp调教91| 欧洲精品中文字幕| 精品久久99ma| 自拍偷拍亚洲激情| 日韩电影在线一区二区三区| 国产美女娇喘av呻吟久久| 色综合久久中文字幕| 欧美电影免费观看高清完整版 | 日韩精品专区在线| 亚洲天堂福利av| 美国十次综合导航| 91麻豆视频网站| 欧美xxxx老人做受| 亚洲一二三专区| 高清国产午夜精品久久久久久| 在线观看国产精品网站| 久久久影视传媒| 亚洲一级不卡视频| 成人国产在线观看| 日韩欧美资源站| 亚洲欧美乱综合| 国产很黄免费观看久久| 欧美一区二区精品| 一区二区三区美女| 粉嫩13p一区二区三区| 在线播放中文一区| 亚洲欧美日韩国产另类专区| 国内久久精品视频| 337p亚洲精品色噜噜噜| 成人免费视频在线观看| 国内欧美视频一区二区| 欧美日韩国产在线观看| 国产精品电影院| 韩国av一区二区| 日韩欧美一二三区| 午夜精品福利一区二区蜜股av | 亚洲国产一区二区三区青草影视 | av一区二区三区黑人| 日韩午夜三级在线| 性感美女久久精品| 色视频欧美一区二区三区| 国产精品久久久久三级| 国产999精品久久久久久| 欧美成人精品高清在线播放| 亚洲国产精品自拍| 欧美午夜精品电影| 亚洲伊人伊色伊影伊综合网| www.成人在线| 中文字幕视频一区| 成人精品鲁一区一区二区| 久久久99精品免费观看不卡| 国内精品久久久久影院一蜜桃| 欧美一级高清片在线观看| 亚洲成va人在线观看| 欧美日韩一区三区四区| 亚洲国产一区二区三区青草影视| 色综合久久中文综合久久97 | 欧美日韩一区久久| 视频一区在线播放| 欧美丰满高潮xxxx喷水动漫| 亚洲国产综合在线| 欧美精品v国产精品v日韩精品| 亚洲福利视频三区| 欧美日韩国产一二三| 视频精品一区二区| 91精品婷婷国产综合久久 | 欧美电视剧免费全集观看| 免费看精品久久片| 欧美大白屁股肥臀xxxxxx| 美女尤物国产一区| 国产午夜精品福利| 国产精品1024| 中文字幕在线观看一区二区| 一本色道**综合亚洲精品蜜桃冫| 亚洲欧美偷拍三级| 欧美体内she精视频| 奇米一区二区三区| 久久久久99精品国产片| aaa亚洲精品| 亚洲国产日韩一级| 精品国产免费一区二区三区香蕉| 国产精品资源网| 亚洲免费电影在线| 欧美理论片在线| 久久爱另类一区二区小说| 中文字幕不卡在线播放| 色婷婷激情综合| 老鸭窝一区二区久久精品| 欧美激情一二三区| 欧美日韩一区二区三区不卡| 精品一区二区综合| 国产精品美女久久久久高潮|