C - snprintf 后不输出

C - not output after snprintf

我正在用 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-statement有什么关系或者为什么第一段代码中puts没有effect/output?

因为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" 参数导致的分段错误结果。