C - snprintf后不输出

时间:2016-11-04 17:08:23

标签: c printf puts

我用C做了我的第一步(指针,指针指针等,我喜欢它),所以如果这是一个愚蠢的问题,请怜悯。

此片段不输出任何内容:

char buf[256];
snprintf(buf, sizeof buf, "output: %s%s%s");

puts("test");

这个片段输出" test" (如预期的那样):

char buf[256];
snprintf(buf, sizeof buf, "output: %s%s");

puts("test");

=>test

问题:snprintf在这里扮演哪个角色?与puts语句有任何关系,或者为什么第一个代码中的put没有效果/输出?

1 个答案:

答案 0 :(得分:1)

因为snprintf(buf, sizeof buf, "output: %s%s%s");需要3个参数:

snprintf(buf, sizeof buf, "output: %s%s%s", str1, str2, str3);

snprintf(buf, sizeof buf, "output: %s%s");需要2个参数:

snprintf(buf, sizeof buf, "output: %s%s", str1, str2);

如果你没有将参数传递给snprintf函数并不意味着snprintf不会尝试访问它们。因此,您看到的结果是由snprintf尝试访问不存在的“str3”参数导致的分段错误结果。