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

📅  最后修改于: 2021-05-25 23:37:18             🧑  作者: Mango

在C中,给定一个字符串变量str ,应首选以下两个中的哪一个将其打印到stdout?

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

可以首选puts()来打印字符串,因为它通常更便宜(puts()的实现通常比printf()更简单),并且如果字符串具有诸如’%s’之类的格式字符,则printf()会给出出乎意料的结果。另外,如果str是用户输入字符串,则使用printf()可能会导致安全问题(有关详细信息,请参见此内容)。
还要注意,puts()将光标移动到下一行。如果您不希望光标移动到下一行,则可以使用puts()的以下变体。

fputs(str, stdout)

您可以尝试使用以下程序来测试上述puts()和printf()之间的差异。

程序1

C
// C program to show the use of puts
#include 
int main()
{
    puts("Geeksfor");
    puts("Geeks");
 
    getchar();
    return 0;
}


C
// C program to show the use of fputs and getchar
#include 
int main()
{
    fputs("Geeksfor", stdout);
    fputs("Geeks", stdout);
 
    getchar();
    return 0;
}


C
// C program to show  the side effect of using
// %s in printf
#include 
int main()
{
    // % is intentionally put here to show side effects of
    // using printf(str)
    printf("Geek%sforGeek%s");
    getchar();
    return 0;
}


C
// C prgram to show the use of puts
#include 
int main()
{
    puts("Geek%sforGeek%s");
    getchar();
    return 0;
}


程序2

C

// C program to show the use of fputs and getchar
#include 
int main()
{
    fputs("Geeksfor", stdout);
    fputs("Geeks", stdout);
 
    getchar();
    return 0;
}

程序3

C

// C program to show  the side effect of using
// %s in printf
#include 
int main()
{
    // % is intentionally put here to show side effects of
    // using printf(str)
    printf("Geek%sforGeek%s");
    getchar();
    return 0;
}

程序4

C

// C prgram to show the use of puts
#include 
int main()
{
    puts("Geek%sforGeek%s");
    getchar();
    return 0;
}
想要从精选的最佳视频中学习和练习问题,请查看《基础知识到高级C的C基础课程》。