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

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

?? ustdlib.c

?? freertosV4.40 是一種small的嵌入式系統。利于嵌入式開好者入門學習嵌入式操作系統。通過對于源碼的學習可以很好的掌握freertos的運行機制。
?? C
?? 第 1 頁 / 共 2 頁
字號:
                    //
                    // Update the conversion count.  This will be the number of
                    // characters that should have been written, even if there
                    // was not room in the buffer.
                    //
                    iConvertCount += ulIdx;

                    //
                    //
                    // This command has been handled.
                    //
                    break;
                }

                //
                // Handle the %u command.
                //
                case 'u':
                {
                    //
                    // Get the value from the varargs.
                    //
                    ulValue = va_arg(vaArgP, unsigned long);

                    //
                    // Set the base to 10.
                    //
                    ulBase = 10;

                    //
                    // Convert the value to ASCII.
                    //
                    goto convert;
                }

                //
                // Handle the %x and %X commands.  Note that they are treated
                // identically; i.e. %X will use lower case letters for a-f
                // instead of the upper case letters is should use.
                //
                case 'x':
                case 'X':
                {
                    //
                    // Get the value from the varargs.
                    //
                    ulValue = va_arg(vaArgP, unsigned long);

                    //
                    // Set the base to 16.
                    //
                    ulBase = 16;

                    //
                    // Determine the number of digits in the string version of
                    // the value.
                    //
convert:
                    for(ulIdx = 1;
                        (((ulIdx * ulBase) <= ulValue) &&
                         (((ulIdx * ulBase) / ulBase) == ulIdx));
                        ulIdx *= ulBase, ulCount--)
                    {
                    }

                    //
                    // Provide additional padding at the beginning of the
                    // string conversion if needed.
                    //
                    if((ulCount > 1) && (ulCount < 16))
                    {
                        for(ulCount--; ulCount; ulCount--)
                        {
                            //
                            // Copy the character to the output buffer if
                            // there is room.
                            //
                            if(ulSize != 0)
                            {
                                *pcBuf++ = cFill;
                                ulSize--;
                            }

                            //
                            // Update the conversion count.
                            //
                            iConvertCount++;
                        }
                    }

                    //
                    // Convert the value into a string.
                    //
                    for(; ulIdx; ulIdx /= ulBase)
                    {
                        //
                        // Copy the character to the output buffer if
                        // there is room.
                        //
                        if(ulSize != 0)
                        {
                            *pcBuf++ = g_pcHex[(ulValue / ulIdx) % ulBase];
                            ulSize--;
                        }

                        //
                        // Update the conversion count.
                        //
                        iConvertCount++;
                    }

                    //
                    // This command has been handled.
                    //
                    break;
                }

                //
                // Handle the %% command.
                //
                case '%':
                {
                    //
                    // Simply write a single %.
                    //
                    if(ulSize != 0)
                    {
                        *pcBuf++ = pcString[-1];
                        ulSize--;
                    }

                    //
                    // Update the conversion count.
                    //
                    iConvertCount++;

                    //
                    // This command has been handled.
                    //
                    break;
                }

                //
                // Handle all other commands.
                //
                default:
                {
                    //
                    // Indicate an error.
                    //
                    if(ulSize >= 5)
                    {
                        strncpy(pcBuf, "ERROR", 5);
                        pcBuf += 5;
                        ulSize -= 5;
                    }
                    else
                    {
                        strncpy(pcBuf, "ERROR", ulSize);
                        pcBuf += ulSize;
                        ulSize = 0;
                    }

                    //
                    // Update the conversion count.
                    //
                    iConvertCount += 5;

                    //
                    // This command has been handled.
                    //
                    break;
                }
            }
        }
    }

    //
    // Null terminate the string in the buffer.
    //
    *pcBuf = 0;
    return(iConvertCount);
}

//*****************************************************************************
//
//! A simple sprintf function supporting \%c, \%d, \%s, \%u, \%x, and \%X.
//!
//! \param pcBuf is the buffer where the converted string is stored.
//! \param pcString is the format string.
//! \param ... are the optional arguments, which depend on the contents of the
//! format string.
//!
//! This function is very similar to the C library <tt>sprintf()</tt> function.
//! Only the following formatting characters are supported:
//!
//! - \%c to print a character
//! - \%d to print a decimal value
//! - \%s to print a string
//! - \%u to print an unsigned decimal value
//! - \%x to print a hexadecimal value using lower case letters
//! - \%X to print a hexadecimal value using lower case letters (not upper case
//! letters as would typically be used)
//! - \%\% to print out a \% character
//!
//! For \%d, \%u, \%x, and \%X, an optional number may reside between the \%
//! and the format character, which specifies the minimum number of characters
//! to use for that value; if preceeded by a 0 then the extra characters will
//! be filled with zeros instead of spaces.  For example, ``\%8d'' will use
//! eight characters to print the decimal value with spaces added to reach
//! eight; ``\%08d'' will use eight characters as well but will add zeros
//! instead of spaces.
//!
//! The type of the arguments after \b pcString must match the requirements of
//! the format string.  For example, if an integer was passed where a string
//! was expected, an error of some kind will most likely occur.
//!
//! The caller must ensure that the buffer pcBuf is large enough to hold the
//! entire converted string, including the null termination character.
//!
//! \return The count of characters that were written to the output buffer,
//! not including the NULL termination character.
//
//*****************************************************************************
int
usprintf(char *pcBuf, const char *pcString, ...)
{
    va_list vaArgP;
    int iRet;

    //
    // Start the varargs processing.
    //
    va_start(vaArgP, pcString);

    //
    // Call vsnprintf to perform the conversion.  Use a
    // large number for the buffer size.
    //
    iRet = uvsnprintf(pcBuf, 0xffff, pcString, vaArgP);

    //
    // End the varargs processing.
    //
    va_end(vaArgP);

    //
    // Return the conversion count.
    //
    return(iRet);
}

//*****************************************************************************
//
//! A simple snprintf function supporting \%c, \%d, \%s, \%u, \%x, and \%X.
//!
//! \param pcBuf is the buffer where the converted string is stored.
//! \param ulSize is the size of the buffer.
//! \param pcString is the format string.
//! \param ... are the optional arguments, which depend on the contents of the
//! format string.
//!
//! This function is very similar to the C library <tt>sprintf()</tt> function.
//! Only the following formatting characters are supported:
//!
//! - \%c to print a character
//! - \%d to print a decimal value
//! - \%s to print a string
//! - \%u to print an unsigned decimal value
//! - \%x to print a hexadecimal value using lower case letters
//! - \%X to print a hexadecimal value using lower case letters (not upper case
//! letters as would typically be used)
//! - \%\% to print out a \% character
//!
//! For \%d, \%u, \%x, and \%X, an optional number may reside between the \%
//! and the format character, which specifies the minimum number of characters
//! to use for that value; if preceeded by a 0 then the extra characters will
//! be filled with zeros instead of spaces.  For example, ``\%8d'' will use
//! eight characters to print the decimal value with spaces added to reach
//! eight; ``\%08d'' will use eight characters as well but will add zeros
//! instead of spaces.
//!
//! The type of the arguments after \b pcString must match the requirements of
//! the format string.  For example, if an integer was passed where a string
//! was expected, an error of some kind will most likely occur.
//!
//! The function will copy at most \b ulSize - 1 characters into the
//! buffer \b pcBuf.  One space is reserved in the buffer for the null
//! termination character.
//!
//! The function will return the number of characters that would be
//! converted as if there were no limit on the buffer size.  Therefore
//! it is possible for the function to return a count that is greater than
//! the specified buffer size.  If this happens, it means that the output
//! was truncated.
//!
//! \return the number of characters that were to be stored, not including
//! the NULL termination character, regardless of space in the buffer.
//
//*****************************************************************************
int
usnprintf(char *pcBuf, unsigned long ulSize, const char *pcString, ...)
{
int iRet;

    va_list vaArgP;

    //
    // Start the varargs processing.
    //
    va_start(vaArgP, pcString);

    //
    // Call vsnprintf to perform the conversion.
    //
    iRet = uvsnprintf(pcBuf, ulSize, pcString, vaArgP);

    //
    // End the varargs processing.
    //
    va_end(vaArgP);

    //
    // Return the conversion count.
    //
    return(iRet);
}

//*****************************************************************************
//
// Close the Doxygen group.
//! @}
//
//*****************************************************************************

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久亚洲欧洲日产国码αv| 99精品久久久久久| 亚洲国产毛片aaaaa无费看 | 国产精品传媒视频| 精品国产乱码91久久久久久网站| 欧美日韩国产精选| 欧美欧美欧美欧美首页| 91精品国产91久久久久久最新毛片 | 一区二区三区中文字幕电影| 亚洲麻豆国产自偷在线| 中文字幕色av一区二区三区| 国产欧美日韩视频一区二区| 中文字幕电影一区| 亚洲人成在线播放网站岛国| 洋洋av久久久久久久一区| 亚洲国产欧美另类丝袜| 毛片av一区二区| 国产麻豆精品theporn| 99久久婷婷国产综合精品电影| 色成年激情久久综合| 欧美人妖巨大在线| 国产午夜精品一区二区三区视频| 中文字幕一区二区三中文字幕| 亚洲一区二区精品视频| 麻豆91在线看| 成人ar影院免费观看视频| 欧美影院一区二区三区| 精品久久久久久久一区二区蜜臀| 中国av一区二区三区| 洋洋成人永久网站入口| 加勒比av一区二区| 一本到高清视频免费精品| 91精品国产品国语在线不卡| 国产日韩欧美麻豆| 午夜精品福利在线| 成人av中文字幕| 日韩亚洲电影在线| ㊣最新国产の精品bt伙计久久| 婷婷久久综合九色综合伊人色| 国产精品夜夜嗨| 欧美一区二区三区电影| 亚洲欧美在线高清| 国产在线精品免费| 欧美精品久久99久久在免费线| 国产女主播在线一区二区| 日韩电影在线观看电影| 色婷婷亚洲一区二区三区| www一区二区| 捆绑变态av一区二区三区| 在线观看不卡一区| 国产精品色呦呦| 国产一区二区三区四区五区入口 | 亚洲精品久久嫩草网站秘色| 精品一区二区av| 91精品国产丝袜白色高跟鞋| 亚洲精品成人少妇| av中文一区二区三区| 久久综合五月天婷婷伊人| 五月天激情小说综合| 日本道免费精品一区二区三区| 久久免费偷拍视频| 久久99九九99精品| 91精品国产综合久久香蕉的特点| 亚洲精品久久久久久国产精华液| 国产黑丝在线一区二区三区| 精品久久久久久久久久久院品网 | 亚洲v日本v欧美v久久精品| av中文字幕亚洲| 中文字幕高清不卡| 成人理论电影网| 国产日韩欧美精品一区| 国产精品系列在线观看| 精品国产凹凸成av人导航| 免费在线一区观看| 欧美一区日本一区韩国一区| 日本在线播放一区二区三区| 7777精品伊人久久久大香线蕉超级流畅| 一区二区三区在线高清| 在线观看视频一区二区欧美日韩| 中文字幕日韩精品一区| 色综合久久久久综合99| 亚洲一区二区3| 欧美日韩在线精品一区二区三区激情 | 亚洲永久精品国产| 欧美人妖巨大在线| 蓝色福利精品导航| 国产视频一区二区在线| 99久久久精品| 亚洲在线视频免费观看| 欧美精品一二三四| 精品一区二区免费看| 欧美国产精品劲爆| 色婷婷综合久久久中文字幕| 首页欧美精品中文字幕| 2020国产成人综合网| 成年人国产精品| 偷拍自拍另类欧美| 精品久久国产老人久久综合| 成人在线视频一区| 亚洲国产wwwccc36天堂| 日韩美女一区二区三区| 成人黄色a**站在线观看| 亚洲一区二区美女| 久久亚洲综合色| 日本道色综合久久| 韩国精品免费视频| 亚洲激情在线播放| 欧美mv日韩mv亚洲| 91原创在线视频| 久88久久88久久久| 一区二区在线观看av| 精品国产91乱码一区二区三区| 99re在线视频这里只有精品| 日韩激情av在线| 亚洲欧洲日本在线| 日韩女优毛片在线| 一本色道a无线码一区v| 久久国产夜色精品鲁鲁99| 亚洲精品水蜜桃| 国产女人水真多18毛片18精品视频| 一本一道综合狠狠老| 国产99精品视频| 人人精品人人爱| 一区二区视频免费在线观看| 国产精品色在线观看| 精品999在线播放| 91超碰这里只有精品国产| 91老司机福利 在线| 激情五月婷婷综合网| 日本亚洲天堂网| 亚洲午夜精品一区二区三区他趣| 亚洲国产精品成人综合色在线婷婷| 91精品国产品国语在线不卡| 欧美亚洲一区三区| 99久久综合99久久综合网站| 国产精品乡下勾搭老头1| 美女视频黄 久久| 日韩福利电影在线观看| 亚洲午夜电影在线观看| 亚洲黄色免费电影| 日韩美女精品在线| 国产精品美女视频| 中文字幕欧美日韩一区| 国产日韩在线不卡| 中文字幕免费一区| 国产蜜臀97一区二区三区| 久久久久亚洲蜜桃| 久久久.com| 国产人成亚洲第一网站在线播放| 久久久午夜精品| 久久九九全国免费| 国产欧美日韩卡一| 中文字幕精品一区| 亚洲视频一区二区在线观看| 国产精品久久久久久亚洲毛片 | 欧美精品一二三| 欧美电影在哪看比较好| 在线成人小视频| 日韩西西人体444www| 久久嫩草精品久久久久| 国产欧美一区二区三区鸳鸯浴| 亚洲国产激情av| 伊人开心综合网| 午夜精品123| 国内精品写真在线观看| 国产成人8x视频一区二区| 成人不卡免费av| 欧美午夜不卡在线观看免费| 欧美日本一区二区三区| 欧美大片一区二区| 亚洲国产精品成人久久综合一区| 中文字幕人成不卡一区| 亚洲成av人片在线观看无码| 免费在线观看不卡| 成人永久aaa| 欧美精品亚洲一区二区在线播放| 欧美哺乳videos| 中文字幕亚洲欧美在线不卡| 一区二区高清在线| 美女久久久精品| 99久久精品国产网站| 在线播放日韩导航| 国产精品视频一二三| 性欧美疯狂xxxxbbbb| 国产黑丝在线一区二区三区| 欧洲日韩一区二区三区| 久久在线观看免费| 亚洲黄色在线视频| 国产一区二区三区四区五区美女| 91国产免费观看| 久久久五月婷婷| 亚洲成av人影院| av不卡免费电影| 欧美岛国在线观看| 亚洲精品国产成人久久av盗摄| 国产伦精品一区二区三区视频青涩| 色综合久久久久| 国产精品久久久久一区| 捆绑调教美女网站视频一区| 欧美网站一区二区|