<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 25, comments - 69, trackbacks - 0, articles - 2

    sprintf的問題

    Posted on 2006-11-28 18:18 壯士日志 閱讀(915) 評論(0)  編輯  收藏 所屬分類: 編程技術

    ??????今天系統莫明其妙的故障,以前用的好好的客戶信息匯總統計突然出現異常,查看日志顯示oracle的sql語句異常.
    ??????跟蹤調試后臺發現問題出現在sprintf語句上面,sql預定義 char[8000],然后用sprintf來格式化,結果當語句的數據超過8000的時候就不能正常處理了.
    ???? google了一下:

    眾所周知,sprintf不能檢查目標字符串的長度,可能造成眾多安全問題,所以都會推薦使用snprintf.

    snprintf(_snprintf)的聲明是這樣的

    int _snprintf(
    ?? char *buffer,
    ?? size_t count,
    ?? const char *format [,
    ????? argument] ...
    );

    If len < count, then len characters are stored in buffer, a null-terminator is appended, and len is returned.

    If len = count, then len characters are stored in buffer, no null-terminator is appended, and len is returned.

    If len > count, then count characters are stored in buffer, no null-terminator is appended, and a negative value is returned.


    最常見的錯誤用法有:
    1.
    char sa[256]={0};
    _snprintf(sa,sizeof(sa),"%s",sb);
    //錯誤原因:當sb的長度>=256的時候,sa將沒有'\0'結尾

    2.
    char sa[256];
    _snprintf(sa,sizeof(sa)-1,"%s",sb);
    //錯誤原因:當sb的長度>=255的時候,sa將沒有'\0'結尾,忘記給sa初始化

    3.
    char sa[256];
    _snprintf(sa,sizeof(sa)-1,"%s",sb);
    sa[sizeof(sa)]=0;
    //錯誤原因:最后一行數組越界

    正確的用法
    1. //推薦用法
    char sa[256];
    sa[sizeof(sa)-1]=0;
    _snprintf(sa,sizeof(sa),"%s",sb);
    if(sa[sizeof(sa)-1]!=0)
    {
    ?? printf("warning:string will be truncated");
    ?? sa[sizeof(sa)-1]=0;
    }

    2.
    char sa[256]={0};
    int result = _snprintf(sa,sizeof(sa),"%s",sb);
    if(result==sizeof(sa) || result<0)
    {
    ??? printf("warning:sting will be truncated");
    ?? sa[sizeof(sa)-1]=0;
    }

    主站蜘蛛池模板: 日木av无码专区亚洲av毛片| 亚洲色大成网站WWW久久九九| 亚洲午夜在线电影| 两个人的视频www免费| 亚洲国产V高清在线观看| jizzjizz亚洲日本少妇| 国产资源免费观看| 免费手机在线看片| 亚洲色欲久久久久综合网| 2022免费国产精品福利在线| 日本亚洲国产一区二区三区| 十八禁视频在线观看免费无码无遮挡骂过 | 亚洲熟妇久久精品| 成年人网站在线免费观看| 亚洲综合精品成人| 国产99视频精品免费视频7| 免费国产污网站在线观看不要卡 | 国产成人精品免费直播| 理论片在线观看免费| 国产亚洲精品精品国产亚洲综合| 久久久久久久国产免费看| 亚洲va久久久噜噜噜久久狠狠| 久久免费观看国产99精品| 亚洲伊人久久精品| 国产精品免费电影| 丰满人妻一区二区三区免费视频| 亚洲AV午夜成人影院老师机影院| 91免费播放人人爽人人快乐| 亚洲AV无码成人网站在线观看| 久久久久亚洲爆乳少妇无| 久草福利资源网站免费| 一本色道久久综合亚洲精品蜜桃冫| 国产老女人精品免费视频| 97无码人妻福利免费公开在线视频 | 黄+色+性+人免费| 色网站在线免费观看| 久热综合在线亚洲精品| 免费毛片在线视频| 在线观看免费播放av片| 亚洲中文字幕乱码熟女在线| 亚洲精品一品区二品区三品区|