亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

基于C++中sprintf的錯誤總結詳解

 更新時間:2013年05月16日 17:07:37   作者:  
本篇文章是對C++中sprintf的錯誤進行了詳細的分析介紹,需要的朋友參考下
sprintf 是個變參函數,使用時經常出問題,而且只要出問題通常就是能導致程序崩潰的內存訪問錯誤。
下面對sprintf 常出錯誤問題進行簡單的總結:

1、緩沖區(qū)溢出:第一個參數的長度太短了,解決辦法:將第一個參數的長度擴大。打印字符串時,盡量使用”%.ns”的形式指定最大字符數
char buf[5];
sprintf(buf, ":%d", 3246);
printf("buf is %s\n", buf);

將buf修改為char buf[6]

2、忘記第一個參數:原因用printf 用得用習慣了,偶爾會忘記
char buf[6];
sprintf(":%d", 3246);
printf("buf is %s\n", buf);

錯誤提示: error C2664: 'sprintf' : cannot convert parameter 2 from 'int' to 'const char *'

3、變參對應出問題:通常是忘記了提供對應某個格式符的變參,導致以后的參數統(tǒng)統(tǒng)錯位,檢查檢查吧。尤其是對應”*”的那些參數,都提供了嗎?
不要把一個整數對應一個”%s”

char buf[100];
int a=6;
sprintf(buf, ":%d,%s", 3246,a);
printf("buf is %s\n", buf);

溫馨提示:a對應的應該是%d而不是%s
 
4、還有下面這種錯誤,我只能意會不知道怎么來描述?,F在給出錯誤的代碼和正確的代碼的例子。大家自己看吧~~
錯誤的代碼
char buf[15];
char a1[] = {'A', 'B', 'C', 'D', 'E', 'F', 'G'};
char a2[] = {'H', 'I', 'J', 'K', 'L', 'M', 'N'};
sprintf(buf, "%s%s", a1, a2); //出現亂碼,得出的結果并非我們所需要的
printf("buf is %s\n", buf);

正確的代碼
char buf[15];
char a1[] = {'A', 'B', 'C', 'D', 'E', 'F', 'G'};
char a2[] = {'H', 'I', 'J', 'K', 'L', 'M', 'N'};
sprintf(buf, "%.7s%.7s", a1, a2);//產生:"ABCDEFGHIJKLMN"
printf("buf is %s\n", buf);

相關文章

  • C++實現LeetCode(347.前K個高頻元素)

    C++實現LeetCode(347.前K個高頻元素)

    這篇文章主要介紹了C++實現LeetCode(347.前K個高頻元素),本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下
    2021-08-08
  • 淺析C++中的函數與指針

    淺析C++中的函數與指針

    這篇文章主要介紹了淺析C++中的函數與指針,是C++入門學習中的基礎知識,需要的朋友可以參考下
    2015-09-09
  • 整型數據在內存中存儲方式的講解

    整型數據在內存中存儲方式的講解

    今天小編就為大家分享一篇關于整型數據在內存中存儲方式的講解,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-02-02
  • C語言實現BMP圖像細化處理

    C語言實現BMP圖像細化處理

    這篇文章主要為大家詳細介紹了C語言實現BMP圖像細化處理,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • C語言實現括號匹配的方法

    C語言實現括號匹配的方法

    這篇文章主要介紹了C語言實現括號匹配的方法,文中代碼簡單易懂,方便大家更好的學習,感興趣的朋友可以參考下
    2020-06-06
  • C語言數據結構之算法的時間復雜度

    C語言數據結構之算法的時間復雜度

    這篇文章主要介紹了C語言數據結構之算法的時間復雜度,文章基于c語言的相關資料展開詳細介紹,具有一定的參價值,需要的小伙伴可以參考一下
    2022-05-05
  • 巧妙使用RAII中的ScopeExit

    巧妙使用RAII中的ScopeExit

    Resource Acquisition Is Initialization,資源獲取即初始化,將資源的生命周期與一個對象的生命周期綁定,這篇文章主要介紹了巧妙使用RAII中的ScopeExit,需要的朋友可以參考下
    2021-05-05
  • C語言遞歸函數與漢諾塔問題簡明理解

    C語言遞歸函數與漢諾塔問題簡明理解

    遞歸(recursive)函數是“自己調用自己”的函數,無論是采用直接或間接調用方式。間接遞歸意味著函數調用另一個函數(然后可能又調用第三個函數等),最后又調用第一個函數。因為函數不可以一直不停地調用自己,所以遞歸函數一定具備結束條件
    2022-07-07
  • C++構造函數的類型,淺拷貝與深拷貝詳解

    C++構造函數的類型,淺拷貝與深拷貝詳解

    這篇文章主要為大家詳細介紹了C++構造函數的類型,淺拷貝與深拷貝,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • C++ std::unique_lock 用法實例詳解

    C++ std::unique_lock 用法實例詳解

    std::unique_lock 是 C++11 提供的一個用于管理互斥鎖的類,它提供了更靈活的鎖管理功能,適用于各種多線程場景,這篇文章給大家介紹了C++ std::unique_lock 用法,感興趣的朋友跟隨小編一起看看吧
    2023-09-09

最新評論