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

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

?? wcstombs.c

?? C標準庫源代碼,能提高對C的理解,不錯的哦
?? C
字號:
/***
*wcstombs.c - Convert wide char string to multibyte char string.
*
*       Copyright (c) 1990-1997, Microsoft Corporation. All rights reserved.
*
*Purpose:
*       Convert a wide char string into the equivalent multibyte char string.
*
*******************************************************************************/


#include <cruntime.h>
#include <stdlib.h>
#include <limits.h>
#include <internal.h>
#include <mtdll.h>
#include <dbgint.h>
#include <errno.h>

#ifndef _MAC
#include <locale.h>
#include <setlocal.h>
#endif  /* _MAC */

/***
*int __cdecl wcsncnt - count wide characters in a string, up to n.
*
*Purpose:
*       Internal local support function. Counts characters in string including NULL.
*       If NULL not found in n chars, then return n.
*
*Entry:
*       const wchar_t *string   - start of string
*       int n                   - character count
*
*Exit:
*       returns number of wide characters from start of string to
*       NULL (inclusive), up to n.
*
*Exceptions:
*
*******************************************************************************/

static int __cdecl wcsncnt (
        const wchar_t *string,
        int cnt
        )
{
        int n = cnt+1;
        wchar_t *cp = (wchar_t *)string;

        while (--n && *cp)
            cp++;

        if (n && !*cp)
            return cp - string + 1;
        return cnt;
}

/***
*size_t wcstombs() - Convert wide char string to multibyte char string.
*
*Purpose:
*       Convert a wide char string into the equivalent multibyte char string,
*       according to the LC_CTYPE category of the current locale.
*       [ANSI].
*
*       NOTE:  Currently, the C libraries support the "C" locale only.
*              Non-C locale support now available under _INTL switch.
*Entry:
*       char *s            = pointer to destination multibyte char string
*       const wchar_t *pwc = pointer to source wide character string
*       size_t           n = maximum number of bytes to store in s
*
*Exit:
*       If s != NULL, returns    (size_t)-1 (if a wchar cannot be converted)
*       Otherwise:       Number of bytes modified (<=n), not including
*                    the terminating NUL, if any.
*
*Exceptions:
*       Returns (size_t)-1 if s is NULL or invalid mb character encountered.
*
*******************************************************************************/

#ifdef _MT

size_t __cdecl wcstombs
        (
        char * s,
        const wchar_t * pwcs,
        size_t n
        )
{
        int retval;
        int local_lock_flag;

        _lock_locale( local_lock_flag )
        retval = _wcstombs_lk(s, pwcs, n);
        _unlock_locale( local_lock_flag );
        return retval;
}

#endif  /* _MT */

#ifdef _MT
size_t __cdecl _wcstombs_lk
#else  /* _MT */
size_t __cdecl wcstombs
#endif  /* _MT */
        (
        char * s,
        const wchar_t * pwcs,
        size_t n
        )
{
        size_t count = 0;
#ifndef _MAC
        int i, retval;
        char buffer[MB_LEN_MAX];
        BOOL defused = 0;
#endif  /* _MAC */
        if (s && n == 0)
            /* dest string exists, but 0 bytes converted */
            return (size_t) 0;

        _ASSERTE(pwcs != NULL);

#ifndef _MAC


        /* if destination string exists, fill it in */
        if (s)
        {
            if (__lc_handle[LC_CTYPE] == _CLOCALEHANDLE)
            {
                /* C locale: easy and fast */
                while(count < n)
                {
                    if (*pwcs > 255)  /* validate high byte */
                    {
                        errno = EILSEQ;
                        return (size_t)-1;  /* error */
                    }
                    s[count] = (char) *pwcs;
                    if (*pwcs++ == L'\0')
                        return count;
                    count++;
                }
                return count;
            } else {

                if (1 == MB_CUR_MAX)
                {
                    /* If SBCS, one wchar_t maps to one char */

                    /* WideCharToMultiByte will compare past NULL - reset n */
                    if (n > 0)
                        n = wcsncnt(pwcs, n);

                    if ( ((count = WideCharToMultiByte( __lc_codepage,
                                                        WC_COMPOSITECHECK |
                                                            WC_SEPCHARS,
                                                        pwcs,
                                                        n,
                                                        s,
                                                        n,
                                                        NULL,
                                                        &defused )) != 0) &&
                         (!defused) )
                    {
                        if (*(s + count - 1) == '\0')
                            count--; /* don't count NUL */

                        return count;
                    }

                    errno = EILSEQ;
                    return (size_t)-1;
                }
                else {

                    /* If MBCS, wchar_t to char mapping unknown */

                    /* Assume that usually the buffer is large enough */
                    if ( ((count = WideCharToMultiByte( __lc_codepage,
                                                        WC_COMPOSITECHECK |
                                                            WC_SEPCHARS,
                                                        pwcs,
                                                        -1,
                                                        s,
                                                        n,
                                                        NULL,
                                                        &defused )) != 0) &&
                         (!defused) )
                    {
                        return count - 1; /* don't count NUL */
                    }

                    if (defused || GetLastError() != ERROR_INSUFFICIENT_BUFFER)
                    {
                        errno = EILSEQ;
                        return (size_t)-1;
                    }

                    /* buffer not large enough, must do char by char */
                    while (count < n)
                    {
                        if ( ((retval = WideCharToMultiByte( __lc_codepage,
                                                             0,
                                                             pwcs,
                                                             1,
                                                             buffer,
                                                             MB_CUR_MAX,
                                                             NULL,
                                                             &defused )) == 0)
                             || defused )
                        {
                            errno = EILSEQ;
                            return (size_t)-1;
                        }

                        if (count + retval > n)
                            return count;

                        for (i = 0; i < retval; i++, count++) /* store character */
                            if((s[count] = buffer[i])=='\0')
                                return count;

                        pwcs++;
                    }

                    return count;
                }
            }
        }
        else { /* s == NULL, get size only, pwcs must be NUL-terminated */

            if (__lc_handle[LC_CTYPE] == _CLOCALEHANDLE)
                return wcslen(pwcs);
            else {
                if (((count=WideCharToMultiByte(__lc_codepage,
                WC_COMPOSITECHECK | WC_SEPCHARS,
                pwcs, -1, NULL, 0, NULL, &defused)) == 0) || (defused))
                {
                    errno = EILSEQ;
                    return (size_t)-1;
                }

                return count - 1;
            }
        }

#else  /* _MAC */

        /* if destination string exists, fill it in */
        if (s)
        {
            /* C locale: easy and fast */
            while(count < n)
            {
                if (*pwcs > 255)  /* validate high byte */
                {
                    errno = EILSEQ;
                    return (size_t)-1;  /* error */
                }
                s[count] = (char) *pwcs;
                if (*pwcs++ == L'\0')
                    return count;
                count++;
            }
            return count;

        } else { /* s == NULL, get size only, pwcs must be NUL-terminated */
            const wchar_t *eos = pwcs;

            while( *eos++ ) ;

            return( (size_t)(eos - pwcs - 1) );
        }

#endif  /* _MAC */
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
www.综合网.com| 国产欧美日韩亚州综合 | 欧美精选一区二区| 国产午夜精品美女毛片视频| 亚洲一区二区三区爽爽爽爽爽| 极品少妇xxxx精品少妇偷拍| 欧美日韩电影在线| 日韩毛片高清在线播放| 国模少妇一区二区三区| 欧美男同性恋视频网站| 亚洲精品国产第一综合99久久| 国产成人一区二区精品非洲| 日韩视频一区二区三区在线播放| 一区二区三区加勒比av| 福利一区二区在线| 国产亚洲综合色| 国产一区二区电影| 欧美成人vr18sexvr| 日韩专区欧美专区| 欧美精品日日鲁夜夜添| 一区二区三区欧美日| 99精品偷自拍| 中文字幕中文字幕一区| 成人一区二区三区在线观看| 欧美激情一区二区在线| 国产资源在线一区| 久久综合九色综合欧美98| 玖玖九九国产精品| 久久亚洲精品小早川怜子| 国产乱妇无码大片在线观看| 欧美大片顶级少妇| 国产一区 二区 三区一级| 欧美www视频| 国产高清在线精品| 中文字幕国产精品一区二区| 成人免费观看视频| 国产精品国产精品国产专区不片| 成人美女在线观看| 亚洲欧美日韩国产综合| 91国在线观看| 日韩黄色片在线观看| 精品久久免费看| 国产成人亚洲精品狼色在线| 中文字幕第一区第二区| 色婷婷久久久久swag精品| 午夜影院久久久| 欧美成人伊人久久综合网| 国产乱对白刺激视频不卡| 国产精品久99| 欧美日本视频在线| 国产在线播放一区三区四| 国产精品久久久久久福利一牛影视 | 欧美精品丝袜中出| 美女视频黄 久久| 日本一二三不卡| 欧美天堂亚洲电影院在线播放| 日韩av午夜在线观看| 国产日韩三级在线| 色哟哟一区二区在线观看| 日韩电影免费在线观看网站| 2021中文字幕一区亚洲| 97久久超碰精品国产| 日本亚洲最大的色成网站www| 国产清纯白嫩初高生在线观看91| 99re在线视频这里只有精品| 青青草国产成人99久久| 国产精品网站一区| 欧美精品亚洲一区二区在线播放| 韩国在线一区二区| 亚洲一区在线观看视频| 久久精品一区二区三区四区| 欧美日韩高清一区二区三区| 国产一区二区三区不卡在线观看| 亚洲精品国产品国语在线app| 精品国产乱码91久久久久久网站| 99久久99久久精品免费看蜜桃 | 国产v综合v亚洲欧| 日韩av一二三| 夜夜嗨av一区二区三区中文字幕| 日韩欧美电影一二三| www.欧美日韩| 狠狠色狠狠色综合| 亚洲成人7777| 亚洲欧美精品午睡沙发| 精品99久久久久久| 91精品国产色综合久久ai换脸 | 天天综合日日夜夜精品| 欧美国产日韩一二三区| 欧美mv日韩mv| 91精品国产综合久久久蜜臀粉嫩| eeuss影院一区二区三区 | 免费在线成人网| 亚洲国产毛片aaaaa无费看| 国产精品理论在线观看| 久久久国际精品| 日韩欧美一级二级| 欧美精品高清视频| 在线精品视频免费观看| 99久久国产综合精品麻豆| 国产精品一区一区| 国内精品不卡在线| 国内精品视频一区二区三区八戒| 五月婷婷综合在线| 亚洲一二三区不卡| 一区二区三区在线免费视频 | 91麻豆福利精品推荐| 国产成人夜色高潮福利影视| 久久se这里有精品| 久久激情五月婷婷| 狠狠色狠狠色综合日日91app| 日韩精品国产精品| 日韩成人午夜电影| 日日骚欧美日韩| 日本网站在线观看一区二区三区| 性做久久久久久免费观看| 亚洲妇女屁股眼交7| 香蕉乱码成人久久天堂爱免费| 亚洲大片免费看| 视频一区视频二区中文字幕| 日韩成人精品视频| 精品一区二区三区在线观看国产| 久久精品国产99国产精品| 国产在线播精品第三| 国产99精品国产| 91在线一区二区| 7777精品伊人久久久大香线蕉完整版| 欧美挠脚心视频网站| 欧美va在线播放| 国产精品伦一区二区三级视频| 亚洲欧美电影院| 亚洲aⅴ怡春院| 久久99热这里只有精品| 成人在线综合网| 欧洲av一区二区嗯嗯嗯啊| 日韩欧美资源站| 中文字幕的久久| 亚洲国产sm捆绑调教视频 | 国产精品美女久久久久av爽李琼 | 一本大道久久精品懂色aⅴ | 99视频一区二区三区| 在线观看免费成人| 精品久久五月天| 亚洲日本韩国一区| 日本一不卡视频| 国产二区国产一区在线观看| 国产精品高潮呻吟久久| 国产精品初高中害羞小美女文| 亚洲欧美另类久久久精品2019| 日韩精品三区四区| 国产成人在线视频免费播放| 日本久久一区二区三区| 日韩美女在线视频| 国产精品久久久久久久第一福利 | 另类小说色综合网站| 成人精品鲁一区一区二区| 欧美丝袜第三区| 国产色产综合色产在线视频| 午夜在线成人av| 成人免费看黄yyy456| 欧美大度的电影原声| 亚洲久本草在线中文字幕| 精品一区二区三区蜜桃| 欧美在线观看一区| 亚洲国产岛国毛片在线| 日日夜夜一区二区| 色婷婷激情综合| 久久久国际精品| 秋霞影院一区二区| 欧亚洲嫩模精品一区三区| 国产女人水真多18毛片18精品视频| 亚洲国产另类av| 色婷婷一区二区| 中文字幕不卡在线观看| 久久丁香综合五月国产三级网站| 欧美亚洲自拍偷拍| 国产精品麻豆欧美日韩ww| 韩国成人在线视频| 欧美一区二区视频在线观看 | 欧美亚洲一区二区在线观看| 国产精品日韩精品欧美在线 | 日本欧美大码aⅴ在线播放| 色哟哟国产精品| 国产精品国产三级国产普通话三级 | 欧美色电影在线| 亚洲视频一区二区免费在线观看| 韩国女主播成人在线观看| 91精品免费观看| 亚洲mv大片欧洲mv大片精品| 日本道色综合久久| 亚洲天堂a在线| 国产经典欧美精品| 精品奇米国产一区二区三区| 日本vs亚洲vs韩国一区三区| 欧美日本韩国一区二区三区视频 | 国产麻豆精品久久一二三| 日韩精品一区二区三区swag| 青青青爽久久午夜综合久久午夜| 欧美猛男gaygay网站| 亚洲成人福利片| 91精品国产一区二区三区 |