Linux snprintf使用总结

snprintf()函数用于将格式化的数据写入字符串,其原型为:
    int snprintf(char *str, int n, char * format [, argument, ...]);

【参数】str为要写入的字符串;n为要写入的字符的最大数目,超过n会被截断;format为格式化字符串,与printf()函数相同;argument为变量。

【返回值】成功则返回参数str 字符串长度,失败则返回-1,错误原因存于errno 中。

snprintf()拷贝n-1个字符串到str中,同时在结尾添加‘\0‘;所以若要拷贝的字符串长度为10,则n应该为11,如

char buf[1024] = {0};

char* tmp = "aaaaaaaaaaaaaaaaaa";

snprintf(buf, strlen(tmp)+1, "%s", tmp);

时间: 2024-10-30 13:51:35

Linux snprintf使用总结的相关文章

(_)snprintf跨平台测试

#include <stdio.h> #include <string.h> #include <stdlib.h> int main() { char a[10]; memset(a, 255, 10); #如果win _snprintf(a, 2, "ss"); #如果linux snprintf(a, 2, "ss"); #如果结束 printf("%d %d %d\n", a[0], a[1], a[2

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

一.sprintf() 函数详解 在将各种类 型的数据构造成字符串时,sprintf 的强大功能很少会让你失望. 由于 sprintf 跟 printf 在用法上几乎一样,只是打印的目的地不同而已,前者打印到字符串中,后者则直接在命令行上输出.这也导致 sprintf 比 printf 有用得多.所以本文着重介绍 sprintf,有时也穿插着用用 pritnf. sprintf是个变参函数,定义如下: int sprintf( char *buffer, const char *format [

在 linux 下用 C 寫 socket 程式

十幾年沒有寫 C 了,這可以說是重新學習,底下的程式是改寫自 W.Richard Stevens 的名著 - Networking APIs: Sockets and XTI,改寫的原因有二: (1) 在我的開發環境 scientific linux 7.0 上沒辦法正常 compile,可能是因為 Stevens 的程式是在 UNIX 上寫的,與 linux 上略有不同; (2) Stevens 用 #define 將許多常用的函式重新定義,對於初學者來說,反而會被混淆,我將這些函式還原為原始

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

对于linux下system()函数的深度理解(整理) (2013-02-07 08:58:54) 这几天调程序(嵌入式linux),发现程序有时就莫名其妙的死掉,每次都定位在程序中不同的system()函数,直接在shell下输入system()函数中调用的命令也都一切正常.就没理这个bug,以为是其他的代码影响到这个,或是内核驱动文件系统什么的异常导致,昨天有出现了这个问题,就随手百了一下度,问题出现了,很多人都说system()函数要慎用要少用要能不用则不用,system()函数不稳定?

linux守护进程

#include <iostream>#include <unistd.h>//#include "curl/curl.h"#include "app_curl.h"#include "youtube_package.h"#include "CAutoMail.h"#include <fcntl.h>#include <signal.h>#include <unistd.h

Linux下librdkafka客户端的编译运行

Linux下librdkafka客户端的编译运行 librdkafka是一个开源的Kafka客户端C/C++实现,提供了Kafka生产者.消费者接口. 由于项目需要,我要将Kafka生产者接口封装起来给别人调用,所以先安装了librdkakfa,然后在demo上进行修改封装一个生产者接口. [一] 安装librdkafka 首先在github上下载librdkafka源码,解压后进行编译: cd librdkafka-master chmod 777 configure lds-gen.py .

【转】snprintf()函数使用方法

众所周知,sprintf不能检查目标字符串的长度,可能造成众多安全问题,所以都会推荐使用snprintf. 注:sprintf()函数:int sprintf( char *buffer, const char *format, [ argument] … );返回的是实际写入buffer的长度 自从snprintf代替了sprintf,相信大家对snprintf的使用不会少,函数定义如下: int snprintf(char* dest_str,size_t size,const char*

linux下sprintf_s函数的替代(转载)

转自:http://www.cnblogs.com/yeahgis/archive/2013/01/22/2872179.html windows平台下线程安全的格式化字符串函数sprint_s并非标准C函数,因此linux下无法使用,但可以使用snprintf函数代替. /*函数原型:*/ int snprintf(char *dest, size_t n, const char *fmt, ...); /*函数说明: 最多从源串中拷贝n-1个字符到目标串中,然后再在后面加一个0.所以如果目标

Linux音频ALSA机制学习笔记&lt;一&gt;

首先宏观看内核暴露给上层的接口: [email protected]:/ # cat /dev/snd/ controlC0 pcmC0D10p pcmC0D13c pcmC0D15c pcmC0D2c pcmC0D3c pcmC0D5p pcmC0D8c pcmC0D0c pcmC0D11p pcmC0D13p pcmC0D15p pcmC0D2p pcmC0D3p pcmC0D6c pcmC0D9c pcmC0D0p pcmC0D12c pcmC0D14c pcmC0D1c pcmC0D31