麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > C > 正文

snprintf函數的用法解析

2020-01-26 15:57:44
字體:
來源:轉載
供稿:網友

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

Result1(推薦的用法)

復制代碼 代碼如下:

#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:(不推薦使用)
復制代碼 代碼如下:

#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函數返回值的測試:
復制代碼 代碼如下:

#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:
復制代碼 代碼如下:

#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

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

運行結果為:
10|1234

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 露脸各种姿势啪啪的清纯美女 | 日韩 欧美 中文 | 欧美一级三级在线观看 | 欧美久久一区二区 | 成人做爰s片免费看网站 | 欧美黄一级| a免费视频 | 色人阁五月天 | www.99av | 欧美精品久久久久久久多人混战 | 欧美a级在线免费观看 | 免费看性xxx高清视频自由 | 超碰人人做人人爱 | 日本在线播放一区二区三区 | 黄视频免费观看 | 超久久 | 久久精品欧美一区二区三区不卡 | 亚洲国产综合在线观看 | 国产正在播放 | 久色成人 | 亚洲成人欧美 | 国产一精品久久99无吗一高潮 | 亚洲精品久久久久www | 双性精h调教灌尿打屁股的文案 | 欧美性受xxxx人人本视频 | 中文字幕在线亚洲 | 黑人日比视频 | 亚洲黑人在线观看 | 黄色大片网 | 久久人人97超碰国产公开结果 | h视频免费在线 | 欧美大电影免费观看 | 亚洲一区二区在线免费 | 特黄一区二区三区 | 九一免费版在线观看 | 精品一区二区免费视频视频 | 久久精品黄 | 久久亚洲精品国产 | 日韩黄色影视 | 精品在线免费播放 | 亚洲综合网站 |