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

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

?? lib_str.c

?? 移植到freescale 9s12系列單片機的uCOSII
?? C
?? 第 1 頁 / 共 4 頁
字號:
*
*                   (c) String searched from end to beginning.
*                       (1) Search character NOT found in search string; NULL pointer returned.
*                       (2) Applicable ONLY IF search character is NOT the terminating NULL character.
*
*                   (d) Search character found.
*                       (1) Return pointer to first occurrence of search character in search string.
*********************************************************************************************************
*/

CPU_CHAR  *Str_Char_Last (CPU_CHAR  *pstr,
                          CPU_CHAR   srch_char)
{
    CPU_CHAR    *pstr_next;
    CPU_SIZE_T   str_len;


    if (pstr == (CPU_CHAR *)0) {                                /* Rtn NULL if srch str ptr NULL (see Note #2a).        */
        return ((CPU_CHAR *)0);
    }


    pstr_next  = pstr;
    str_len    = Str_Len(pstr);
    pstr_next += str_len;
    while (( pstr_next != pstr) &&                              /* Srch str from end until beg (see Note #2c) ...       */
           (*pstr_next != srch_char)) {                         /* ... until srch char found   (see Note #2d).          */
        pstr_next--;
    }


    if (*pstr_next != srch_char) {                              /* If srch char NOT found, str points to NULL; ...      */
        return ((CPU_CHAR *)0);                                 /* ... rtn NULL (see Notes #2b & #2c).                  */
    }

    return (pstr_next);                                         /* Else rtn ptr to found srch char (see Note #2d).      */
}


/*$PAGE*/
/*
*********************************************************************************************************
*                                             Str_Str()
*
* Description : Search string for first occurence of a specific search string.
*
* Argument(s) : pstr            Pointer to        string (see Note #1).
*
*               psrch_str       Pointer to search string (see Note #1).
*
* Return(s)   : Pointer to first occurrence of search string in string, if any.
*
*               Pointer to NULL,                                        otherwise.
*
* Caller(s)   : various.
*
* Note(s)     : (1) String buffers NOT modified.
*
*               (2) String search terminates when :
*
*                   (a) String pointer passed a NULL pointer.
*                       (1) No string search performed; NULL pointer returned.
*
*                   (b) Search string length greater than string length.
*                       (1) No string search performed; NULL pointer returned.
*
*                   (c) Search string length equal to zero.
*                       (1) NULL search string at end of string returned.
*
*                   (d) Entire string has been searched.
*                       (1) Maximum size of the search is defined as the subtraction of the
*                           search string length from the string length.
*                       (2) Search string not found; NULL pointer returned.
*
*                   (e) Search string found.
*                       (1) Search string found according to Str_Cmp_N() return value.
*                       (2) Return pointer to first occurrence of search string in string.
*********************************************************************************************************
*/

CPU_CHAR  *Str_Str (CPU_CHAR  *pstr,
                    CPU_CHAR  *psrch_str)
{
    CPU_SIZE_T    str_len;
    CPU_SIZE_T    srch_str_len;
    CPU_SIZE_T    srch_len;
    CPU_SIZE_T    srch_ix;
    CPU_BOOLEAN   srch_done;
    CPU_INT16S    srch_cmp;
    CPU_CHAR     *pstr_srch_ix;

                                                                /* Rtn NULL if str ptr(s) NULL (see Note #2a).          */
    if (pstr == (CPU_CHAR *)0) {
        return ((CPU_CHAR *)0);
    }
    if (psrch_str == (CPU_CHAR *)0) {
        return ((CPU_CHAR *)0);
    }


    str_len      = Str_Len(pstr);
    srch_str_len = Str_Len(psrch_str);
    if (srch_str_len > str_len) {                               /* If srch str len > str len, rtn NULL  (see Note #2b). */
        return ((CPU_CHAR *)0);
    }
    if (srch_str_len == 0) {                                    /* If srch str len = 0, srch str equal NULL str; ...    */
        pstr_srch_ix = (CPU_CHAR *)(pstr + str_len);            /* ... rtn ptr to NULL str found in str (see Note #2c). */
        return (pstr_srch_ix);
    }

    srch_len  = str_len - srch_str_len;                         /* Determine srch len (see Note #2d1).                  */
    srch_ix   = 0;
    srch_done = DEF_NO;
    while ((srch_done == DEF_NO) && (srch_ix <= srch_len)) {
        pstr_srch_ix = (CPU_CHAR *)(pstr + srch_ix);
        srch_cmp     =  Str_Cmp_N(pstr_srch_ix, psrch_str, srch_str_len);
        srch_done    = (srch_cmp == 0) ? DEF_YES : DEF_NO;
        srch_ix++;
    }


    if (srch_cmp != 0) {                                        /* If srch str NOT found, rtn NULL  (see Note #2d).     */
        return ((CPU_CHAR *)0);
    }

    return (pstr_srch_ix);                                      /* Rtn ptr to srch str found in str (see Note #2e).     */
}


/*$PAGE*/
/*
*********************************************************************************************************
*                                           Str_FmtNbr_32()
*
* Description : Format number into a multi-digit character string.
*
* Argument(s) : nbr             Number                          to format (see Note #1).
*
*               nbr_dig         Number of integer        digits to format (see Note #2).
*
*               nbr_dp          Number of decimal point  digits to format.
*
*               lead_zeros      Prepend leading zeros    option (DEF_YES/DEF_NO) [see Note #3].
*
*               nul             NULL-character terminate option (DEF_YES/DEF_NO) [see Note #4].
*
*               pstr_fmt        Pointer to character array to return formatted number string (see Note #5).
*
* Return(s)   : Pointer to formatted string, if NO errors (see Note #6).
*
*               Pointer to NULL,             otherwise.
*
* Caller(s)   : various.
*
* Note(s)     : (1) (a) The maximum accuracy for 32-bit floating-point numbers :
*
*
*                                 Maximum Accuracy            log [Internal-Base ^ (Number-Internal-Base-Digits)]
*                           32-bit Floating-point Number  =  -----------------------------------------------------
*                                                                             log [External-Base]
*
*                                                             log [2 ^ 24]
*                                                         =  --------------
*                                                               log [10]
*
*                                                         <  7.225  Base-10 Digits
*
*                               where
*                                       Internal-Base                   Internal number base of floating-
*                                                                           point numbers (i.e.  2)
*                                       External-Base                   External number base of floating-
*                                                                           point numbers (i.e. 10)
*                                       Number-Internal-Base-Digits     Number of internal number base
*                                                                           significant digits (i.e. 24)
*
*                   (b) Some compilers' floating-point routines MAY further reduce the maximum accuracy.
*
*                   (c) If the total number of digits to format ('nbr_dig + nbr_dp') is greater than the 
*                       maximum accuracy; digits following the first, significantly-accurate digits will
*                       be inaccurate.
*
*               (2) (a) If the number of digits to format ('nbr_dig') is less than the number of significant
*                       integer digits of the number to format ('nbr'); then the most-significant digits of
*                       the formatted number will be truncated.
*
*                           Example :
*
*                               nbr      = 23456.789
*                               nbr_dig  = 3
*                               nbr_dp   = 2
*
*                               pstr_fmt = "456.78"
*
*                   (b) If number to format ('nbr') is negative but the most-significant digits of the
*                       formatted number are truncated (see Note #2a); the negative sign still prefixes
*                       the truncated formatted number.
*
*                           Example :
*
*                               nbr      = -23456.789
*                               nbr_dig  =  3
*                               nbr_dp   =  2
*
*                               pstr_fmt = "-456.78"
*
*               (3) (a) Leading zeros option prepends leading '0's prior to the first non-zero digit.
*                       The number of leading zeros is such that the total number integer digits is
*                       equal to the requested number of integer digits to format ('nbr_dig').
*
*                   (b) (1) If leading zeros option DISABLED,                        ...
*                       (2) ... number of digits to format is non-zero,              ...
*                       (3) ... & the integer value of the number to format is zero; ...
*                       (4) ... then one digit of '0' value is formatted.
*
*                           This is NOT a leading zero; but a single integer digit of '0' value.
*
*               (4) (a) NULL-character terminate option DISABLED prevents overwriting previous character
*                       array formatting.
*
*                   (b) WARNING: Unless 'pstr_fmt' character array is pre-/post-terminated, NULL-character
*                       terminate option DISABLED will cause character string run-on.
*$PAGE*
*               (5) (a) Format buffer size NOT validated; buffer overruns MUST be prevented by caller.
*
*                   (b) To prevent character buffer overrun :
*
*                           Character array size MUST be  >=  ('nbr_dig'         +
*                                                              'nbr_dp'          +
*                                                              1 negative sign   +
*                                                              1 decimal point   +
*                                                              1 'NUL' terminator)  characters
*
*               (6) String format terminates when :
*
*                   (a) Format string pointer is passed a NULL pointer.
*                       (1) No string format performed; NULL pointer returned.
*
*                   (b) Number successfully formatted into character string array.
*********************************************************************************************************
*/

#if (LIB_STR_CFG_FP_EN == DEF_ENABLED)
CPU_CHAR  *Str_FmtNbr_32 (CPU_FP32      nbr,
                          CPU_INT08U    nbr_dig,
                          CPU_INT08U    nbr_dp,
                          CPU_BOOLEAN   lead_zeros,
                          CPU_BOOLEAN   nul,
                          CPU_CHAR     *pstr_fmt)
{
    CPU_CHAR    *pstr;
    CPU_INT08U   i;
    CPU_INT32U   dig_nbr;
    CPU_INT32U   dig_val;
    CPU_FP32     dig_exp;
    CPU_FP32     dp_exp;

                                                                /* Rtn NULL if str ptr NULL (see Note #6a).             */
    if (pstr_fmt == (CPU_CHAR *)0) {
        return ((CPU_CHAR *)0);
    }


    pstr = pstr_fmt;

    if (nbr < 0.0) {                                            /* If nbr neg,             ...                          */
        if ((nbr_dig > 0) ||                                    /* ... &  at least one dig ...                          */
            (nbr_dp  > 0)) {                                    /* ... or at least one dp; ...                          */
             nbr     = -nbr;                                    /* ... negate nbr &        ...                          */
            *pstr++  = '-';                                     /* ... prefix with neg sign (see Note #2b).             */
        }
    }

    if (nbr_dig > 0) {
        dig_exp = 1.0;
        for (i = 1; i < nbr_dig; i++) {
            dig_exp *= 10.0;
        }
        for (i = nbr_dig; i > 0; i--) {                         /* Fmt str for desired nbr digs.                        */
            dig_nbr = (CPU_INT32U)(nbr / dig_exp);
            if ((dig_nbr >  0) ||                               /* If dig nbr > 0,                              ...     */
                (nbr_dig == 1) ||                               /* ... OR exactly 1 dig to fmt,                 ...     */
                (i       == 1) ||                               /* ... OR on one's  dig to fmt,                 ...     */
                (lead_zeros == DEF_YES)) {                      /* ... OR lead zeros opt ENABLED (see Note #3), ...     */
                                                                /* ... calc & fmt dig val.                              */
                 dig_val = (CPU_INT32U)(dig_nbr % 10 );
                *pstr++  = (CPU_CHAR  )(dig_val + '0');
            }
            dig_exp /= 10.0;                                    /* Shift to next least-significant dig.                 */
        }
    }

    if (nbr_dp > 0) {
       *pstr++ = '.';                                           /* Append dp prior to dp conversion.                    */
        dp_exp = 10.0;
        for (i = 0; i < nbr_dp; i++) {                          /* Fmt str for desired nbr dp.                          */
            dig_nbr  = (CPU_INT32U)(nbr * dp_exp );
            dig_val  = (CPU_INT32U)(dig_nbr % 10 );
           *pstr++   = (CPU_CHAR  )(dig_val + '0');
            dp_exp  *=  10.0;                                   /* Shift to next least-significant dp.                  */
        }
    }

    if (nul != DEF_NO) {                                        /* If NOT DISABLED, append NULL char (see Note #4).     */
       *pstr = (CPU_CHAR)0;
    }


    return (pstr_fmt);
}
#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产色91在线| 久久99精品国产.久久久久久| 婷婷激情综合网| 国产成a人亚洲| 日韩一级大片在线| 日韩国产精品91| av亚洲精华国产精华精华| 日韩视频永久免费| 一卡二卡欧美日韩| www.亚洲国产| 国产欧美日韩另类视频免费观看| 日韩精品乱码免费| 欧美天堂一区二区三区| 国产精品久久久久久久岛一牛影视 | 午夜精品视频一区| 不卡的看片网站| 久久中文字幕电影| 免费观看在线色综合| 欧美日韩在线播放一区| 综合色中文字幕| 99精品热视频| 中文字幕中文字幕在线一区| 国产精品一区二区三区乱码| 91麻豆精品国产91久久久久| 亚洲成人免费在线| 欧美色欧美亚洲另类二区| 亚洲精品欧美激情| 色女孩综合影院| 亚洲欧美一区二区三区极速播放 | 亚洲欧洲日韩女同| 国产成人精品影视| 国产精品入口麻豆九色| 国产91精品在线观看| 国产日韩欧美一区二区三区乱码 | 国产午夜亚洲精品羞羞网站| 美女网站色91| 欧美精品一区在线观看| 精品午夜久久福利影院| www亚洲一区| 风间由美一区二区av101| 国产欧美一区二区精品性色| 成人小视频在线| 亚洲色图清纯唯美| 欧美午夜精品一区| 日本不卡一区二区三区| 日韩免费成人网| 成人永久看片免费视频天堂| 中文字幕乱码亚洲精品一区| 91免费国产在线| 日韩在线a电影| 欧美精品一区二区三区蜜臀| 粉嫩在线一区二区三区视频| 亚洲丝袜美腿综合| 欧美高清一级片在线| 精品一区二区在线看| 国产欧美日韩综合精品一区二区| 99精品久久只有精品| 午夜伦欧美伦电影理论片| 精品国产污污免费网站入口 | 久久综合九色综合欧美就去吻| 国产精品77777| 亚洲乱码国产乱码精品精小说 | 精品国产免费一区二区三区四区 | 日韩和欧美一区二区| 精品国产不卡一区二区三区| 成人午夜精品在线| 亚洲一区二区三区四区五区黄| 日韩欧美精品在线| 91小视频在线观看| 久色婷婷小香蕉久久| 中文字幕不卡的av| 欧美日韩成人在线一区| 成人性视频网站| 首页亚洲欧美制服丝腿| 欧美高清在线视频| 7777精品伊人久久久大香线蕉超级流畅 | 国产精品久久久久一区| 欧美精品色综合| 成人avav影音| 麻豆传媒一区二区三区| 亚洲天堂av老司机| 亚洲精品一线二线三线| 欧美专区日韩专区| 国产精品一级片在线观看| 亚洲第一主播视频| 亚洲欧美综合在线精品| 精品毛片乱码1区2区3区| 欧美亚洲动漫精品| 成人精品gif动图一区| 免费在线观看成人| 亚洲国产日韩一级| 亚洲欧美自拍偷拍色图| 精品国产精品网麻豆系列| 欧美精品欧美精品系列| 色综合久久综合中文综合网| 成人一区二区三区在线观看| 精品在线观看免费| 日韩精品久久理论片| 亚洲综合精品久久| 亚洲精品综合在线| 国产精品女同一区二区三区| 久久一日本道色综合| 日韩视频在线你懂得| 欧美日韩午夜影院| 色欧美片视频在线观看在线视频| 国产成人精品综合在线观看 | 久久综合色综合88| 日韩精品一区二区三区在线观看 | 久久久久久久久久久久久女国产乱| 欧美性生活大片视频| 色婷婷综合久色| 成人午夜视频在线| 成人免费高清在线| 成人免费视频视频在线观看免费| 国产一区二三区| 国产成人日日夜夜| 福利一区在线观看| 99免费精品视频| 91偷拍与自偷拍精品| 色综合色综合色综合| 久久久精品天堂| 久久久亚洲综合| 久久久久国色av免费看影院| 久久久久久久免费视频了| 久久蜜桃av一区精品变态类天堂| 国产午夜精品一区二区三区视频| 国产日本亚洲高清| √…a在线天堂一区| 有码一区二区三区| 亚洲第一狼人社区| 麻豆精品一区二区| 福利一区二区在线| 99re成人在线| 欧美性感一区二区三区| 91精品综合久久久久久| 国产成人精品亚洲午夜麻豆| 色偷偷久久一区二区三区| 精品久久久久99| 久久久久久久网| 亚洲天堂2014| 午夜欧美2019年伦理| 精品一区二区三区不卡| 丁香激情综合国产| 在线免费观看不卡av| 欧美一级片在线观看| 2020日本不卡一区二区视频| 中文字幕一区二区三区在线播放| 亚洲一区二区三区四区在线观看 | 666欧美在线视频| 久久久精品欧美丰满| 亚洲男人天堂av网| 蜜臀精品久久久久久蜜臀| 国产成人在线电影| 欧美性受xxxx黑人xyx| 久久一夜天堂av一区二区三区| 中文字幕亚洲区| 男人的天堂亚洲一区| 99精品国产91久久久久久 | 亚洲成人中文在线| 国产乱码一区二区三区| 欧美亚洲日本国产| 久久久综合视频| 婷婷一区二区三区| 成人av影院在线| 精品三级在线观看| 亚洲综合视频在线| 成人黄色网址在线观看| 日韩一级黄色片| 亚洲五码中文字幕| 91玉足脚交白嫩脚丫在线播放| 日韩欧美高清在线| 亚洲成人资源在线| 91色九色蝌蚪| 国产日产欧美精品一区二区三区| 天堂va蜜桃一区二区三区| 一本大道综合伊人精品热热| 国产三级欧美三级日产三级99| 亚洲va欧美va人人爽| 99久久er热在这里只有精品15 | 欧洲精品视频在线观看| 久久久久久99精品| 秋霞电影一区二区| 欧美视频完全免费看| 亚洲欧美成人一区二区三区| 国产风韵犹存在线视精品| 欧美v国产在线一区二区三区| 亚洲国产精品一区二区尤物区| 99re这里只有精品首页| 国产区在线观看成人精品 | 日韩免费视频一区| 日韩国产欧美在线播放| 欧美日韩成人激情| 亚洲第一久久影院| 欧美日韩亚洲国产综合| 亚洲成年人网站在线观看| 欧美日韩国产小视频在线观看| 亚洲黄色免费电影| 欧美色视频在线| 日韩制服丝袜av| 精品卡一卡二卡三卡四在线|