<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;
    }

    主站蜘蛛池模板: 亚洲乱码中文字幕小综合| 亚美影视免费在线观看| 国产aa免费视频| aaa毛片免费观看| 亚洲一级免费视频| 亚洲色婷婷综合开心网| 亚洲成人免费网址| 免费国产污网站在线观看不要卡| 精品亚洲永久免费精品| 亚洲第一成年免费网站| 91av免费在线视频| 亚洲人成免费网站| 亚洲精品美女久久久久99| 最近中文字幕免费mv视频7| 国产黄在线观看免费观看不卡| 亚洲乱码一二三四区麻豆| 亚洲日产无码中文字幕| 我要看WWW免费看插插视频| 免费网站观看WWW在线观看| 亚洲欧美日韩中文二区| 亚洲精品免费在线观看| 亚洲国产综合精品中文字幕| 19禁啪啪无遮挡免费网站| selaoban在线视频免费精品| 亚洲一区AV无码少妇电影| 久久国产亚洲观看| 亚洲午夜福利精品无码| 免费高清小黄站在线观看| 无码一区二区三区免费| 欧亚一级毛片免费看| 亚洲国产成人AV在线播放| 亚洲欧洲日本天天堂在线观看| 国产亚洲美女精品久久久2020| 国产美女精品视频免费观看| 日本三级2019在线观看免费| 小日子的在线观看免费| yellow视频免费在线观看| 羞羞视频免费网站入口| 亚洲精品无码久久久久YW| 亚洲伊人久久大香线蕉在观| 亚洲激情视频网站|