欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

snprintf函數(shù)的用法解析

 更新時(shí)間:2013年07月25日 10:12:28   作者:  
以下是對(duì)snprintf函數(shù)的具體使用方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過來參考下

int snprintf(char *restrict buf, size_t n, const char * restrict  format, ...);
函數(shù)說明:最多從源串中拷貝n-1個(gè)字符到目標(biāo)串中,然后再在后面加一個(gè)0。所以如果目標(biāo)串的大小為n 的話,將不會(huì)溢出。
函數(shù)返回值:若成功則返回欲寫入的字符串長度,若出錯(cuò)則返回負(fù)值。

Result1(推薦的用法)

復(fù)制代碼 代碼如下:

#include <stdio.h>
#include <stdlib.h>

int main()
{
     char str[10]={0,};
     snprintf(str, sizeof(str), "0123456789012345678");
     printf("str=%s/n", str);
     return 0;
}

root] /root/lindatest
$ ./test
str=012345678


Result2:(不推薦使用)
復(fù)制代碼 代碼如下:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    char str[10]={0, };
    snprintf(str, 18, "0123456789012345678");
    printf("str=%s/n", str);
    return 0;
}

root] /root/lindatest
$ ./test
str=01234567890123456


snprintf函數(shù)返回值的測試:
復(fù)制代碼 代碼如下:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    char str1[10] ={0, };
    char str2[10] ={0, };
    int ret1=0,ret2=0;
    ret1=snprintf(str1, sizeof(str1), "%s", "abc");
    ret2=snprintf(str2, 4, "%s", "aaabbbccc");
    printf("aaabbbccc length=%d/n", strlen("aaabbbccc"));
    printf("str1=%s,ret1=%d/n", str1, ret1);
    printf("str2=%s,ret2=%d/n", str2, ret2);
    return 0;
}

[root] /root/lindatest
$ ./test
aaabbbccc length=9
str1=abc,ret1=3
str2=aaa,ret2=9


解釋SIZE:
復(fù)制代碼 代碼如下:

#include <stdio.h>
#include <stdlib.h>
int main()
{
char dst1[10] ={0, },dst2[10] ={0, };
char src1[10] ="aaa",src2[15] ="aaabbbcccddd";
int size=sizeof(dst1);
int ret1=0, ret2=0;
ret1=snprintf(dst1, size, "str :%s", src1);
ret2=snprintf(dst2, size, "str :%s", src2);
printf("sizeof(dst1)=%d, src1=%s, /"str :%%s/"=%s%s, dst1=%s, ret1=%d/n", sizeof(dst1), src1, "str :", src1, dst1, ret1);
printf("sizeof(dst2)=%d, src2=%s, /"str :%%s/"=%s%s, dst2=%s, ret2=%d/n", sizeof(dst2), src2, "str :", src2, dst2, ret2);
return 0;
}
root] /root/lindatest
$ ./test
sizeof(dst1)=10, src1=aaa, "str :%s"=str :aaa, dst1=str :aaa, ret1=8
sizeof(dst2)=10, src2=aaabbbcccddd, "str :%s"=str :aaabbbcccddd, dst2=str :aaab, ret2=17

補(bǔ)充一下,snprintf的返回值是欲寫入的字符串長度,而不是實(shí)際寫入的字符串度。如:
char test[8];
int ret = snprintf(test,5,"1234567890");
printf("%d|%s/n",ret,test);

運(yùn)行結(jié)果為:
10|1234

相關(guān)文章

  • C語言實(shí)現(xiàn)排序算法之歸并排序詳解

    C語言實(shí)現(xiàn)排序算法之歸并排序詳解

    這篇文章主要介紹了C語言實(shí)現(xiàn)排序算法之歸并排序,對(duì)歸并排序的原理及實(shí)現(xiàn)過程做了非常詳細(xì)的解讀,需要的朋友可以參考下
    2014-07-07
  • C語言獲取Shell返回結(jié)果的實(shí)現(xiàn)方法

    C語言獲取Shell返回結(jié)果的實(shí)現(xiàn)方法

    下面小編就為大家?guī)硪黄狢語言獲取Shell返回結(jié)果的實(shí)現(xiàn)方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-07-07
  • 詳細(xì)理解函C語言的函數(shù)棧幀

    詳細(xì)理解函C語言的函數(shù)棧幀

    這篇文章主要為大家介紹了C語言的函數(shù)棧幀,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助,希望能夠給你帶來幫助
    2021-11-11
  • C++動(dòng)態(tài)數(shù)組類的封裝實(shí)例

    C++動(dòng)態(tài)數(shù)組類的封裝實(shí)例

    這篇文章主要介紹了C++動(dòng)態(tài)數(shù)組類的封裝,很重要的概念,需要的朋友可以參考下
    2014-08-08
  • Qt5升級(jí)到Qt6分步遷移教程小結(jié)

    Qt5升級(jí)到Qt6分步遷移教程小結(jié)

    Qt框架的一個(gè)新的長期支持版本6.5最近發(fā)布,本文主要介紹了Qt5升級(jí)到Qt6分步遷移教程小結(jié),具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-09-09
  • C++實(shí)現(xiàn)萬年歷小功能

    C++實(shí)現(xiàn)萬年歷小功能

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)萬年歷小功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • 淺析c#中WebBrowser控件的使用方法

    淺析c#中WebBrowser控件的使用方法

    以下是對(duì)c#中WebBrowser控件的使用方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-07-07
  • C語言修煉之路數(shù)據(jù)類型悟正法?解析存儲(chǔ)定風(fēng)魔上篇

    C語言修煉之路數(shù)據(jù)類型悟正法?解析存儲(chǔ)定風(fēng)魔上篇

    使用編程語言進(jìn)行編程時(shí),需要用到各種變量來存儲(chǔ)各種信息。變量保留的是它所存儲(chǔ)的值的內(nèi)存位置。這意味著,當(dāng)您創(chuàng)建一個(gè)變量時(shí),就會(huì)在內(nèi)存中保留一些空間。您可能需要存儲(chǔ)各種數(shù)據(jù)類型的信息,操作系統(tǒng)會(huì)根據(jù)變量的數(shù)據(jù)類型,來分配內(nèi)存和決定在保留內(nèi)存中存儲(chǔ)什么
    2022-02-02
  • 使用C語言計(jì)算長方體的表面積和體積

    使用C語言計(jì)算長方體的表面積和體積

    這篇文章主要給大家介紹了關(guān)于如何使用C語言計(jì)算長方體的表面積和體積的相關(guān)資料,在C語言中,我們可以使用乘法運(yùn)算符(*)來進(jìn)行乘法運(yùn)算,并將結(jié)果保存在一個(gè)變量中,需要的朋友可以參考下
    2023-10-10
  • C語言實(shí)現(xiàn)三子棋小游戲全程詳解

    C語言實(shí)現(xiàn)三子棋小游戲全程詳解

    完成一個(gè)三子棋的代碼并不是很難,有困難且重要的是完成這個(gè)游戲代碼所具備的思想,因?yàn)樗枷肷系倪M(jìn)步才是真正的進(jìn)步,當(dāng)我們有了這個(gè)思想上的武器,寫出別的代碼,難度就不會(huì)高
    2022-05-05

最新評(píng)論