日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

三个打印函数printf()/sprintf()/snprintf()区别

發(fā)布時間:2025/3/20 编程问答 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 三个打印函数printf()/sprintf()/snprintf()区别 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.


先貼上其函數(shù)原型
printf( const char *format, ...) ? ?格式化輸出字符串,默認輸出到終端-----stdout
sprintf(char *dest, const char *format,...) ? ??格式化輸出字符串到指定的緩沖區(qū)
snprintf(char *dest, size_t size,const char *format,...) ??? 按指定的SIZE格式化輸出字符串到指定的緩沖區(qū)

printf()函數(shù)在這就不再討論,這里主要討論sprintf()與snprintf()的用法及區(qū)別,

[plain]?view plaincopy
  • #include?"stdafx.h"??
  • #include?<stdio.h>??
  • using?namespace?std;??
  • int?_tmain(int?argc,?_TCHAR*?argv[])??
  • {??
  • ????char?*p1="China";??
  • ????char??a[20];??
  • ????sprintf(a,"%s",p1);??
  • ????printf("%s\n",a);??
  • ????memset(a,0,sizeof(a));??
  • ????_snprintf(a,3,"%s",p1);??
  • ????printf("%s\n",a);??
  • ????printf("%d\n",strlen(a));??
  • ????????return?0;??
  • }??

  • 結果輸出:
    China
    Chi
    3
    分析:
    sprintf(a,"%s",p1) ?把p1字符串拷貝到數(shù)組a中('\0'也拷貝過去了)。
    snprintf(a,3,"%s",p1) ?拷貝P1中前3個字符到數(shù)組a中,并在末尾自動添加'\0'。
    sprintf屬于I/O庫函數(shù),snprintf函數(shù)并不是標準c/c++中規(guī)定的函數(shù),但是在許多編譯器中,廠商提供了其實現(xiàn)的版本。在gcc中,該函數(shù)名稱就snprintf,而在VC中稱為_snprintf。 如果你在VC中使用snprintf(),會提示此函數(shù)未聲明,改成_snprintf()即可。

    注意點:
    1 ? sprintf是一個不安全函數(shù),src串的長度應該小于dest緩沖區(qū)的大小,(如果src串的長度大于或等于dest緩沖區(qū)的大小,將會出現(xiàn)內(nèi)存溢出。)
    2 ? snprintf中源串長度應該小于目標dest緩沖區(qū)的大小,且size等于目標dest緩沖區(qū)的大小。(如果源串長度大于或等于目標dest緩沖區(qū)的大小,且size等于目標dest緩沖區(qū)的大小,則只會拷貝目標dest緩沖區(qū)的大小減1個字符,后加'\0';該情況下,如果size大于目標dest緩沖區(qū)的大小則溢出。)
    3 ??snprintf ()函數(shù)返回值問題, ??如果輸出因為size的限制而被截斷,返回值將是“如果有足夠空間存儲,所應能輸出的字符數(shù)(不包括字符串結尾的'\0')”,這個值和size相等或者比size大!也就是說,如果可以寫入的字符串是"0123456789ABCDEF"共16位,但是size限制了是10,這樣 snprintf() 的返回值將會是16?而不是10!

    總結

    以上是生活随笔為你收集整理的三个打印函数printf()/sprintf()/snprintf()区别的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。