【发布时间】:2016-11-04 17:08:22
【问题描述】:
我正在用 C 做我的第一步(指针,指针指针等,我喜欢它),所以如果这是一个愚蠢的问题,请宽恕。
此片段不输出任何内容:
char buf[256];
snprintf(buf, sizeof buf, "output: %s%s%s");
puts("test");
这个片段输出“测试”(如预期的那样):
char buf[256];
snprintf(buf, sizeof buf, "output: %s%s");
puts("test");
=>test
问题: snprintf 在这里扮演什么角色?与 puts 语句是否有任何关系,或者为什么在第一个代码中 puts 没有效果/输出?
【问题讨论】:
-
您的
snprintf调用缺少参数 - 您的编译器应该警告您这一点(假设您启用了编译器警告?)。您可能想选择one of these 并阅读一下。 -
此外 sprintf 和 snprintf 不在标准输出上打印任何内容,它们在缓冲区上打印(在您的情况下为 buf)
-
我正在使用 eclipse cdt。没有出现编译器警告。我现在正在检查我是否错过了某处的设置
-
当您学习一些东西时,阅读手册总是很有用的。查看 snprintf() 的手册以了解它的作用。
-
我知道 snprintf 做了什么(将在内存中将它用于 int+string 连接),但我的问题更多地是关于之后的不同 puts-result