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

2023-11-17

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

linux进程snprintf函数功能,linux 之 snprintf函数用法 的相关文章

  • python使用pygraphdb连接graphdb图数据库

    文章目录 前言 一 GraphDB是什么 二 使用pygraphdb连接graphdb 1 安装pygraphdb 2 功能介绍 数据管理 数据库管理 3 快速上手 4 使用with连接 5 数据管理 6 数据库管理 前言 本文主要介绍如何
  • 计算机组成原理定点源码一位乘,计算机组成原理课程设计-定点原码一位乘法器的设计.doc...

    计算机组成原理课程设计 定点原码一位乘法器的设计 课 程 设 计 报 告 课程设计名称 计算机组成原理课程设计 课程设计题目 定点原码一位乘法器的设计 院 系 计算机学院 专 业 班 级 4401102 学 号 208 姓 名 指导教师 完
  • mysql创建带密码的用户使用密码无法登录,但是不输入密码可以登录

    在cmd窗口 直接使用 mysql usa 可以登录 但是创建sa时候设置密码为123456 原因可能有两个 设置密码后没有强制刷新权限或者重启mysql服务 Mysql数据库的user表中有名字为空的用户名或root的密码为空 解决方法
  • np.where()函数的详细使用介绍

    看了很多博客 见到的没有一个给说清楚了 这里做个记录 这是python提供的函数说明 Help on function where in module numpy where where condition x y Return eleme
  • linux man php,linux man命令的使用

    linux man命令的使用 main 是最常见的帮助命令 也是 Linux 最主要的帮助命令 其基本信息如下 命令名称 man 英文原意 format and display the on line manual pages 所在路径 u
  • 第二个电商项目Bug点统计和解决方法

    第二个完成的项目 在完成项目后 我总结了那些自己感觉重要的BUG 1 BUG系列一 设置延时 导致Activity销毁后 延时中的PullToRefreshListView 为null Bug现象 Bug 85536 在网络不好情况下 快速
  • Nuitka 和 PyInstaller 对比

    一 什么是 Nuitka 和 PyInstaller 1 1 Nuitka Nuitka 是一个 Python 编译器 可以将 Python 代码转换成可执行的 C 代码 然后将其编译成本机可执行文件 与常规的 Python 解释器相比 使
  • 8.3 PowerBI系列之DAX函数专题-矩阵Matrix中高亮显示最大最小值

    需求 用颜色标量年度最大最小值 用颜色标示折线的最大值最小值 实现 在条件格式 规则 基于字段进行计算 度量值 is max min var displayed data calculatetable addcolumns summariz
  • 坚持天天写技术笔记

    恍恍惚惚
  • 用C语言编写一段堆排序算法

    include
  • 同步、异步和阻塞、非阻塞的区别与联系

    同步 异步和阻塞 非阻塞的概念 同步 在执行一个操作的时候需要等待当前操作执行完毕才能执行下一操作 相当于操作串行化 即执行当前函数的时候需要拿到当前函数的返回结果才可以继续执行 异步 在执行一个操作的时候不需要拿到返回结果 只需要拿到注册
  • 程序员必备的免费AI生产力(摸鱼)工具,最后一个,人手必备

    最近ChatGPT等AI技术风靡全球 对于普通大众来说 越来越多的人开始关注智能时代对我们生活的影响 它颠覆了写作 办公 绘画 音视频 图像处理 UI 设计等领域 并涌现出了一批具有颠覆性的应用 在程序员领域 许多 AI 工具已经涌现 如
  • Android fragment间的通讯

    1 使用FragmentPagerAdapter情况下 param viewpagerId viewpager id eg R id vp param position fragment 的位置 return private Fragmen
  • linux线程内存开销

    1 首先是线程自己栈 程序没设置过 就是默认的 ulimit s 中的值 现在一般都是10240 单位KB 2 跟版本有关 是否有 glibc 的 malloc per thread arenas 特性 有了这个特性 设置不好 一个新线程要
  • 2003 - Cant't connect to MySQL server on 'ip'(10060 "Unknown error")

    问题描述 今天在搭建服务器之后 安装好MySQL 启动成功 并且创建远程连接用户 用户名和密码都正确 使用Navicat远程连接抛出如下错误 2003 Cant t connect to MySQL server on 192 168 13
  • Go module的介绍及使用

    Go1 1 1版本发布 2018 08 24发布 已经过去几天 从官方的博客中看到 有两个比较突出的特色 一个就是今天讲的module 模块概念 目前该功能还在试验阶段 有些地方还需要不断的进行完善 在官方正式宣布之前 打算不断修正这种支持
  • 牛客网:美团2021校招笔试-编程题(通用编程试题,第10场)

    某比赛已经进入了淘汰赛阶段 已知共有n名选手参与了此阶段比赛 他们的得分分别是a 1 a 2 a n 小美作为比赛的裁判希望设定一个分数线m 使得所有分数大于m的选手晋级 其他人淘汰 但是为了保护粉丝脆弱的心脏 小美希望晋级和淘汰的人数均在
  • Vivido添加pynq-Z2开发板

    一 下载pynq z2开发板文件 下载地址 https www tulembedded com FPGA ProductsPYNQ Z2 html 二 将下载的文件解压到vivado安装的位置 如果boards目录下面没有boards fi
  • 软件测试自动化UI框架之生成测试报告

    设置报告 自动化测试最后的运行结果要以报告的形式呈现 报告的格式是web端网页 需要引入第三方库 不是唯一的 有很多 一般一个公司统一用一个 1 引入自动生成测试框架报告 2 创建测试报告生成文件夹 reports 3 写代码 框架的入口文

随机推荐

  • UE4开发七:UE4打包

    一 使用UFE打包 UFE Unreal Frontend 虚幻前端 简化加快游戏开发及测试任务的工具 它可以用来准备游戏构建 将游戏部署到设备上并进行启动 测试版本 4 18为例 注意 UE4官方文档原话是在UE4编辑器中启动UFE或者P
  • java并发编程笔记(四)--JMM内存模型

    1 计算机结构 输入设备 就是我们的鼠标 键盘 存储器 对应的就是我们的内存 缓存 运算器和控制器共同组成了cpu 而输出设备就比如显示屏 打印机 我们重点来聊一下缓存 2 缓存 其实 当我们说计算机运行效率低下 速度慢 往往不是cpu的锅
  • Qt: QStringList去除重复元素

    项目中有个需求 有一个Qt字符串列表 里面有一些元素是重复的 要求去除 只留下不重复的元素 方法如下 QStringList distin QStringList list A B C D B B E B E C for int i 0 i
  • Redis(三)

    一 SpringBoot与Redis集成 1 引入依赖
  • 数组去重--根据ID去除数组中重复的数据

    根据ID去除数组中重复的数据 let data id 1 name 你好 id 1 name 你好 let obj let peon data reduce item index gt obj index id obj index id t
  • 使用js完成定时弹出广告设置

  • [485]python识别验证码系列3(基于机器学习)

    基于python语言的tensorflow的 端到端 的字符型验证码识别 1 Abstract 验证码 CAPTCHA 的诞生本身是为了自动区分 自然人 和 机器人 的一套公开方法 但是近几年的人工智能技术的发展 传统的字符验证已经形同虚设
  • Java系列笔记(3) - Java 内存区域和GC机制

    目录 Java垃圾回收概况 Java内存区域 Java对象的访问方式 Java内存分配机制 Java GC机制 垃圾收集器 Java垃圾回收概况 Java GC Garbage Collection 垃圾收集 垃圾回收 机制 是Java与C
  • Ubuntu云原生环境安装,docker+k8s+kubeedge(亲测好用)

    docker安装步骤 Linux 一 移除以前docker相关包 sudo apt get autoremove docker docker ce docker engine docker io containerd runc 二 设置存储
  • 概率与计算机论文,概率归纳逻辑分析论文

    摘要 从穆勒等人对或然性的探讨 经耶方斯对概率归纳逻辑的开创 到卡尔纳普代表的现代概率归纳逻辑体系 考察了概率归纳逻辑的发展历程 从中揭示其兴起的原因 并分析现代归纳逻辑发展的一些新趋势 关键词 概率归纳 逻辑 概率论 概率归纳逻辑旨在以数
  • 字符串应用-实现KMP匹配算法

    题目描述 给定一个主串S和子串P 使用KMP算法查找子串P在主串S中存在的位置 若子串P在主串S中存在 则输出与子串P中第一字符相等的字符在主串S中的序号 若不存在则输出 no 程序输入格式 主串S 子串P 程序输出格式 输出与子串P中第一
  • Linux三剑客之awk命令详解

    目录 一 awk常见用法 二 案例 2 1 awk中 F的使用 2 2 awk中几个特殊的内部变量 用法 三 实战案例 一 awk常见用法 通常情况下awk所使用的命令格式如下 其中 单引号家伙是那个大括号 用于设置对于数据进行的处理动作
  • HDFS DataNode高密度存储机型的探索尝试

    前言 随着公司业务的发展 我们需要存储越来越庞大的数据来支撑公司业务的发展 这里就涉及到了数据存储能力的问题 需要存储的数据越多 其实意味着我们需要更多的机器来扩增HDFS集群存储的总capacity 但是机器数量的变多另外一方面带来的则是
  • Android Studio获取系统级签名方式

    android sharedUserId android uid system 系统签名 通过sharedUserId 拥有同一个User id的多个APK可以配置成运行在同一个进程中 那么把程序的UID配成android uid syst
  • CAS与ABA问题

    在JDK 5之前Java语言是靠synchronized关键字保证同步的 这会导致有锁机制存在以下问题 1 在多线程竞争下 加锁 释放锁会导致比较多的上下文切换和调度延时 引起性能问题 2 一个线程持有锁会导致其它所有需要此锁的线程挂起 3
  • Python爬虫到入门只需要三个月

    如何入门Python 为了能够帮助大家更轻松的学好Python开发 Python爬数据 Python数据分析等相关理论知识 给大家共同分享自己一套Python学习生活资料 文章最后面的有附属的相关资料 无论你是大牛还是小白 是想转行还是想入
  • C语言-扫雷游戏程序设计

    文章目录 一 问题要求 1 问题描述 2 程序的功能 二 基本要求 1 要求分析 2 需求分析 四 设计概要 1 程序的设计概要 2 程序的主要流程 1 设置棋盘 2 布地雷 五 用户说明 六 测试结果 1 运行结果说明 2 测试结论 七
  • 区块链基本加密概念

    什么是区块链 目前狭义就任务就是一个超级账本 区块链可以用来做什么 可以用来无障碍的置换 既然是用来交易的 那么我们就要有一个地址存放我的资产 地址 举例比特资产地址 一个比特币地址由两部分组成 一部分是公钥哈希值经过Base58check
  • 面试:Spring&SpringMVC&Mybatis 面试必备面试题

    Spring SpringMVC Mybatis常见面试题 历史文章 多线程史上最全面试题 持续更新中 dubbo zookeeper55道高频面试题 附加答案 SpringCloud SpringBoot经典面试题 附加答案 Spring
  • linux进程snprintf函数功能,linux 之 snprintf函数用法

    int snprintf char restrict buf size t n const char restrict format 函数说明 最多从源串中拷贝n 1个字符到目标串中 然后再在后面加一个0 所以如果目标串的大小为n 的话 将