#include <stdio.h>#include <string.h>main(){char str[5];memset(str,0,sizeof(str));int rt=_snprintf(str,3,"%s","abcdefg");printf("%d\n",rt);printf("%s",str);}snprintf函数书上是说截取n-1个字符,也就是3-1个字符。
2 回答
吃鸡游戏
TA贡献1829条经验 获得超7个赞
_snprintf(str,3,"%s","abcdefg"); 存放3个字符。(存放n个字符,下标到 n-1)。打印出来的是abc 。
返回值rt为什么是-1呢,因为丢弃了一些字符(-1 表示发生了“错误”)。
如果 char str[100]; int rt = _snprintf(str,100,"%s","abcdefg");
则返回数就是7 (成功写入str的字符个数)。
元芳怎么了
TA贡献1798条经验 获得超7个赞
snprintf(),为函数原型int snprintf(char *str, size_t size, const char *format, ...)。
功能
将可变个参数(...)按照format格式化成字符串,然后将其复制到str中
(1) 如果格式化后的字符串长度 < size,则将此字符串全部复制到str中,并给其后添加一个字符串结束符('\0');
(2) 如果格式化后的字符串长度 >= size,则只将其中的(size-1)个字符复制到str中,并给其后添加一个字符串结束符('\0'),返回值为欲写入的字符串长度。
char a[20];
i = snprintf(a, 9, "%012d", 12345);
printf("i = %d, a = %s", i, a);
输出为:i = 12, a = 000000012345
- 2 回答
- 0 关注
- 88 浏览
添加回答
举报
0/150
提交
取消