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 ...

linux进程snprintf函数功能,linux 之 snprintf函数用法相关推荐

  1. Linux 进程间通讯方式 pipe()函数

    Linux 进程间通讯方式有以下几种: 1->管道(pipe)和有名管道(fifo). 2->消息队列 3->共享内存 4->信号量 5->信号(signal) 6-&g ...

  2. linux应用编程和网络编程-3.4.linux进程全解- 父子关系 exec system函数

    程序的开始和结束 编译链接时的引导代码(构建执行环境)调用main函数 ①编译链接时的链接器:将编译器中引导代码给连接进去和应用程序一起构成最终的可执行程序. ②运行时的加载器:将这个程序加载到内存中 ...

  3. linux 进程 inline hook,高级Linux Kernel Inline Hook技术分析与实现 -电脑资料

    ==Ph4nt0m Security Team== Issue 0x03, Phile #0x03 of 0x07 |=---------------------------------------- ...

  4. linux进程调度算法,关于嵌入式Linux系统实时进程调度算法系统详解

    1 嵌入式Linux系统分析 1.1 嵌入式系统 嵌入式系统(Embedded Systems)是以应用为中心,以计算机技术为基础,软件硬件可剪裁(可编程.可重构),适用于应用系统对功能.可靠性.成本 ...

  5. Linux进程详解 【Linux由基础到进阶】

    Linux进程详解 进程的概念: 虚拟处理器: 虚拟内存: 进程的产生 进程的管理 进程描述符 分配进程描述符 进程描述符的存放 进程的状态 设置进程状态 进程上下文 系统调用与库函数的区别 进程家族 ...

  6. linux进程及作业管理实验,Linux 进程及作业管理(示例代码)

    Linux 进程及作业管理 概述: 一.进程的相关概念: 1.相关定义:内核的功用:   进程管理.文件系统.网络功能.内存管理.驱动程序.安全功能等: 通俗的来说进程是运行起来的程序.唯一标识进程的 ...

  7. linux 进程装入 物理内存 页表,linux进程空间一步步探究.doc

    linux进程空间一步步探究.doc linux 进程地址空间的一步步探究 讲师:程姚根 我们知道,在32位机器上linux操作系统中的进程的地址空间大小是4G,其中0-3G是用户空间,3G-4G是内 ...

  8. linux 进程装入 物理内存 页表,linux内存管理解析----linux物理,线性内存布局及页表的初始化...

    主要议题: 1分页,分段模式及实模式 2Linux分页 3linux内存线性地址空间布局及物理内存空间布局 4linux页表初始化及代码解析 1.1.1内存寻址和保护模式 在X86平台上,内存控制单元 ...

  9. linux进程通信发送方式,Linux服务器编程——Linux系统编程之进程通信

    进程通信又称IPC IPC方法 方法:管道(最简单) 信号(开销最小) 共享映射区/共享内存(无血缘关系) 本地套接字(最稳定) Linux文件类型: -   文件 d  目录 l   符号链接 s  ...

最新文章

  1. android html文字垂直居中,Android 浏览器文本垂直居中问题
  2. 记录一下添加查询场地坐标功能中修改判断条件和画点的大小
  3. Keras之ML~P:基于Keras中建立的回归预测的神经网络模型(根据200个数据样本预测新的5+1个样本)——回归预测
  4. JS魔法堂:doctype我们应该了解的基础知识
  5. Go 语言web 框架 Gin 练习8
  6. lua 字符串分割_Lua 分隔字符串,可以设置指定分隔符
  7. 解决the NTP socket is in use, exiting问题
  8. leetcode1306. 跳跃游戏 III(bfs)
  9. [Python]关键字is和操作符==
  10. 如何从python官网下载模块-Python各种模块下载及安装配置
  11. ValueError: `generator` yielded an element of shape (2,) where an element of shape (?, ?) was expect
  12. 贝壳找房的2021,依然充满变数
  13. 项目经理之项目经理应该做什么
  14. 在access中记录的末尾标志是什么_access习题--报表和页
  15. 进阶1·调用高德API获取交通数据(多个URL访问,字典提取,while无限循环下的程序间断运行)
  16. 2017cad光标大小怎么调_cad十字光标怎么调大-调整cad十字光标大小的方法 - 河东软件园...
  17. 栈迁移过程记录,栈指针rsp、rbp、rip、leave变化过程
  18. 详解机器学习中的熵、条件熵、相对熵、交叉熵
  19. 计算list的字节数/mb数
  20. 20162316刘诚昊 17年10月9日测验“排序课堂测试”

热门文章

  1. 微信团队自研的APM利器,Matrix性能监控日志探索
  2. macOS Catalina最新系统
  3. 课程设计-学生选修课程系统
  4. 社区团购小程序开发 平邑网站建设网店制作
  5. Dajngo自带的Django-filter的使用详解
  6. Logstash:通过 lookups 来丰富数据
  7. 用lingo排版课程表 求大佬指点
  8. JDBC连接数据库(详细步骤)
  9. burp的配置及抓包百度的过程
  10. OpenCV3之——图像对比度,亮度调整