1. 主页
  2. 文档
  3. C语言教程
  4. C语言输入输出
  5. puts() vs printf() 用于打印字符串

puts() vs printf() 用于打印字符串

在 C 语言中,给定一个字符串变量str,应该首选以下两个中的哪一个来将其打印到标准输出?

1) puts(str);
2) printf(str);

puts() 可以优先用于打印字符串,因为它通常更便宜(puts() 的实现通常比 printf() 简单),并且如果字符串具有像 ‘%s’ 这样的格式化字符,那么 printf() 会给出意想不到的结果。此外,如果 str 是用户输入字符串,则使用 printf() 可能会导致安全问题(有关详细信息,请参阅内容)。 
另请注意 puts() 将光标移动到下一行。如果您不希望光标移动到下一行,则可以使用 puts() 的以下变体。 

fputs(str, stdout)

您可以尝试以下程序来测试上面讨论的 puts() 和 printf() 之间的差异。

程序 1

// C program to show the use of puts
#include <stdio.h>
int main()
{
puts("Cxydhfor");
puts("Cxydh");

getchar();
return 0;
}

程序 2

// C program to show the use of fputs and getchar
#include <stdio.h>
int main()
{
fputs("Cxydhfor", stdout);
fputs("Cxydh", stdout);

getchar();
return 0;
}

程序 3

// C program to show the side effect of using
// %s in printf
#include <stdio.h>
int main()
{
// % is intentionally put here to show side effects of
// using printf(str)
printf("Cxydh%sforCxydh%s");
getchar();
return 0;
}

程序 4

// C program to show the use of puts
#include <stdio.h>
int main()
{
puts("Cxydh%sforCxydh%s");
getchar();
return 0;
}

 

 

 

这篇文章对您有用吗?