C中有3个用于输出字符串的标准库函数:puts(),fputs(),printf()
一、puts()函数
示例代码:
/* test of puts() function */
#include <stdio.h>
#define ARR_T "I am an array."
int main(void)
{
char str1[100] = "this is an initialized array.";
char * str2 = "this is another initialized array.";
// puts()函数输出字符串的多种形式
//puts(ARR_T);
puts("an initialized array.");
puts(str1);
puts(str2);
puts(&str1[5]);
puts(str1 + 5);
return 0;
}
运行结果:
1)与printf()函数不通,puts()函数显示字符串时自动在其末尾添加一个换行符
2)puts()函数的停止:遇到空字符就停下来(\0),所以应确保有空字符存在
二、fputs()函数
fputs()函数是puts()函数的面向文件版本,二者之间的区别:
1)fputs()需要第二个参数以说明要写的文件,可以使用stdout(代表standard output)作为参数进行输出显示,stdout在stdio.h文件中定义
2)与puts()函数不同,fputs()并不为输出自动添加换行符
注意:
gets()丢掉输入中的换行符;fgets()存储输入中的换行符
puts()为输入添加换行符;fputs()不为输入添加换行符
示例代码:
/* test of gets() / puts() and fgets() / fputs() */
#include <stdio.h>
int main(void)
{
char str1[100];
char str2[100];
// gets()函数和puts()函数搭配
printf("input a name:\n");
gets(str1); //
//printf("\n");
puts(str1);
// fgets()函数和fputs()函数搭配
printf("input another name:\n");
fgets(str2, 100, stdin); // 3个参数
fputs(str2, stdout); // 2个参数
return 0;
}
运行结果:
三、printf()函数
printf()函数需要一个字符串作为参数
printf()函数使用不如puts()函数方便,但是其可以格式化多种数据类型,因而更通用
printf()函数并不自动在新行上输出每一个字符串
// 两个语句效果相同
printf("%s\n", str);
puts(str);
如果需要在一行输出多个字符串,printf()函数更简单:
printf("%s, %s\n", str1, str2);
puts()函数无法这么轻易地实现该功能,因为puts()函数会自动为输出添加换行符,用fputs()函数可以