再学C语言47:字符串输出
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()函数可以