为什么我打印出来的是abc 而不是ab _snprintf返回值rt为什么是-1呢?

#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个字符。 

慕尼黑的夜晚无繁华
浏览 89回答 2
2回答

吃鸡游戏

_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的字符个数)。

元芳怎么了

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
打开App,查看更多内容
随时随地看视频慕课网APP