snprintf简介

转载 2012年03月22日 14:20:43
转载自:
语法:int snprintf(char *str, size_t size, const char *format, ...);
  snprintf用于将可变个参数(...)按照format格式化成字符串,然后将其复制到str中
  (1) 如果格式化后的字符串长度 < size,则将此字符串全部复制到str中,并给其后添加一个字符串结束符('\0');
  (2) 如果格式化后的字符串长度 >= size,则只将其中的(size-1)个字符复制到str中,并给其后添加一个字符串结束符('\0')
  函数返回值:若成功则返回欲写入的字符串长度,若出错则返回负值。 
示例1:
  #include <stdio.h> //snprintf()
  #include <string.h> //strlen()
  int main()
  {
  char toname[30];
  char *name = "yangtaiping";
  printf("strlen(name) = %d\n", strlen(name));
  snprintf(toname, strlen(name)+strlen("姓名:")+1, "姓名:%s", name);
  printf("toname = %s\n", toname);
  printf("strlen(name) = %d\n", strlen(name));
  }
  strcpy(), sprintf() ,strcat() 存在安全隐患(缓冲区溢出), 其对应的安全版为:strncpy() ,snprintf(), strncat() 。 
  snprintf(s, 100, "%.*S", 3, "abcd");执行后s的值为abc 。%.*s 表示有两项, 第一项指定了长度,第二项则是%s的内容,所以取前三位
  类似的函数还有:
  #include <stdio.h>
  int printf(const char *format, ...); //格式化输出到标准输出设备
  int fprintf(FILE *stream,const char *format, ...); //格式化输出到文件流
  int sprintf(char *str,const char *format, ...); //格式化的输出字符串输出到str指向的地址空间

snprintf 的实现

  • 2013年12月19日 17:02
  • 121KB
  • 下载

snprintf函数用法 .

转载自这个博客哈http://blog.csdn.net/wealoong/article/details/8667028   snprintf(str, sizeof(str), "012345...

snprintf类型不匹配导致的core dump问题分析与定位

对于core dump, 我们应该很熟悉了。之前说过,printf打印日志不规范, 会导致core dump问题, 今天我们来说说类似的问题.        最近, 系统出现异常, 在改打日志的地方...
  • stpeace
  • stpeace
  • 2016年03月26日 07:53
  • 2042

【C语言天天练(十三)】printf、fprintf、sprintf和snprintf函数

#include int printf(const char *format, ...); int fprintf(FILE *stream, const char *format, ...); ...

一周一更之snprintf踩坑记

snpritf陷阱

snprintf与printf

int sprintf( char *buffer, const char *format [, argument] ... ); 除了前两个参数类型固定外,后面可以接任意多个参数。而它的精华,...

mencpy、snprintf和strcpy对比

这些函数的区别在于 实现功能 以及 操作对象 不同。 strcpy 函数操作的对象是 字符串,完成 从 源字符串 到 目的字符串 的 拷贝 功能。函数原型:extern char *st...

C的strncpy和snprintf (是否补充最后字符串结尾)

C里操作字符串很高效,但也很麻烦。 1. char * strcpy ( char * destination, const char * source ); 最常用的函数,但是却不安...

用 snprintf / asprintf 取代不安全的 sprintf

在 C 語言裡,要建立一個字元陣列的字串,常常會使用 sprintf() 這個函數來做格式化的處理。但是實際上,這個函式卻不是那麼「安全」。怎麼說呢?sprintf() 的整個介面長的樣子的是: in...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:snprintf简介
举报原因:
原因补充:

(最多只允许输入30个字)