linux进程snprintf函数功能,linux 之 snprintf函数用法

int snprintf(char *restrict buf, size_t n, const char * restrict  format, ...);

函数说明:最多从源串中拷贝n-1个字符到目标串中,然后再在后面加一个0。所以如果目标串的大小为n 的话,将不会溢出。

函数返回值:若成功则返回欲写入的字符串长度,若出错则返回负值。

Result1(推荐的用法)

#include

#include

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

#include

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

#include

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

#include

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

Linux下 fcntl 函数用法说明

功能描述:根据文件描述词来操作文件的特性. 文件控制函数         fcntl -- file control LIBRARY         Standard C Library (libc, ...

Linux下Kill函数用法

http://www.cnblogs.com/winnxm/archive/2010/01/22/1654502.html 用于向任何进程组或进程发送信号. #include

Linux C 字符串函数 sprintf()、snprintf() 详解

一.sprintf() 函数详解 在将各种类 型的数据构造成字符串时,sprintf 的强大功能很少会让你失望. 由于 sprintf 跟 printf 在用法上几乎一样,只是打印的目的地不同而已,前 ...

linux c语言 select函数用法

linux c语言 select函数用法 表头文件 #i nclude #i nclude #i nclude

c++ 网络编程(五) LINUX下 socket编程 多种I/O函数 -以及readv和writev函数用法

原文作者:aircraft 原文链接:https://www.cnblogs.com/DOMLX/p/9614056.html 一.多种I/O函数 前言:之前我们讲的数据传输一般Linux上用writ ...

[转载]Linux C 字符串函数 sprintf()、snprintf() 详解

一.sprintf() 函数详解 在将各种类 型的数据构造成字符串时,sprintf 的强大功能很少会让你失望. 由于 sprintf 跟 printf 在用法上几乎一样,只是打印的目的地不同而已,前 ...

对于linux下system()函数的深度理解(整理)

原谅: http://blog.sina.com.cn/s/blog_8043547601017qk0.html 这几天调程序(嵌入式linux),发现程序有时就莫名其妙的死掉,每次都定位在程序中不同 ...

转:对于linux下system()函数的深度理解(整理)

这几天调程序(嵌入式linux),发现程序有时就莫名其妙的死掉,每次都定位在程序中不同的system()函数,直接在shell下输入system()函数中调用的命令也都一切正常.就没理这个bug,以为 ...

(笔记)Linux下system()函数的深度理解(整理)

注:从其它地方转的非常好的一篇文章,值得深究! 这几天调程序(嵌入式linux),发现程序有时就莫名其妙的死掉,每次都定位在程序中不同的system()函数,直接在shell下输入system()函数 ...

随机推荐

eclispe或者myeclispe maven jar包不能部署到tomcat下

我们在做web开发是,经常都要在eclipse或者myeclipse中搭建web服务器,并将开发中的web项目部署到web服务器进行调试,在此,我选择的是tomcat服务器.之前部署web项目到tom ...

Linux - 日志文件

Linux日志文件绝大多数存放在/var/log目录,其中一些日志文件由应用程序创建,其他的则通过syslog来创建. Linux系统日志文件通过syslog守护程序在syslog套接字/dev/lo ...

一组PHP可逆加密解密算法

对于大部分密码加密,我们可以采用md5.sha1等方法.可以有效防止数据泄露,但是这些方法仅适用于无需还原的数据加密. 对于需要还原的信息,则需要采用可逆的加密解密算法. 下面一组PHP函数是实现此加 ...

mysql重点--执行计划

explain SQL: 在sql语句前面加explain实现"执行计划"的功能.功能是比较准确的显示将要执行这条sql语句的运行状况. select_simple 是查询类型:t ...

Maven 修改本地存储库位置--转

step1:默认会放在~/.m2/repository目录下 (“~”代表用户的目录,比如windows下一般都是C:\Documents and Settings\[你的用户名]\), step2: ...

Android的AsyncTask类的解读

国庆节放假.搞了半个月都没有上班了,coding的时候一点都不在状态,本来这篇文章是在国庆节前写完的,可是由于自己的懒 惰,导致延期到国庆节,哎,这种习惯真心不好呀...不多说了以下来进入正题 之前我 ...

POJ2411 Mondriaan's Dream(状态压缩)

Mondriaan's Dream Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 15295   Accepted: 882 ...

js选中文字兼容性解决

function selectText(){ if(document.selection){ //ie return document.selection.createRange().text; } ...

C++ 设置光标问题

一.隐藏光标 1.引入头文件window.h 2.  定义光标信息结构体变量 CONSOLE_CURSOR_INFO  cursor info={1,0}; typedef struct _CONSO ...

October 26th, 2017 Week 43rd Thursday

For success, attitude is equally as important as ability. 为取得成功,态度与能力一样重要. Today I read a news about ...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值