C有三个用于输出字符串的标准库函数puts()、fputs()和printf()。
1、puts()函数只需要给出字符串参数的地址。
~~~
#include <stdio.h>
int puts(const char *s);
~~~
示例:
~~~
#include <stdio.h>
#define DEF "I am libing"
int
main(int argc, char **argv)
{
char str1[30] = "I am libing.";
const char *str2 = "I am libing";
puts("I am libing.");
puts(DEF);
puts(str1);
puts(str2);
return 0;
}
~~~
运行结果测试:
~~~
I am libing.
I am libing
I am libing.
I am libing
~~~
注意:上面的所有字符串都是单行显示,但并没有在后面添加换行符。这就是,与printf()不同,puts()显示字符串时自动在其后添加一个换行符。
2、fputs()函数时puts()的面向文件版本。两者的区别是:
a、fputs()需要第二个参数来说明要写的文件。
b、与puts()不同,fputs()并不为输出自动添加换行符。
~~~
#include <stdio.h>
int fputs(const char *s, FILE *stream);
~~~
注意:gets()丢掉输入里的换行符,但puts()为输出添加换行符。另一方面,fgets()存储输入中的换行符,而fputs()也不为输出添加换行符。
技巧:假定写一个循环,读取一行并把它回显在下一行,可以这么写:
~~~
char line[80];
while(gets(line))
puts(line);
~~~
3、printf()与puts()的区别之一就是printf()并不自动在新行上输出每一个字符串。必须指明需要另起一行的地方。
pintf("%s \n", string);等同于 puts(string);
- 前言
- (四)回调函数
- (一)while(1)死循环与for(;;)死循环的区别
- (二)static关键字
- (三)函数
- (四)可变参数函数
- (五)setjmp和longjmp
- (六)指针
- (七)回调函数
- (八)字符串
- (九)动态内存分配
- (十)结构体
- (十一)深入理解指针
- (十二)命令行参数
- (十三)printf、fprintf、sprintf和snprintf函数
- (十四)const关键字详解
- (十五)字符串输入函数fgets、gets和scanf
- (十六)字符串输出函数puts、fputs和printf
- (十七)字符/字符串输出函数fputc、fputs、putc、putchar和puts
- (十八)字符/字符串输入函数fgetc、fgets、getc、getchar和gets
- (十九)restrict关键词
- (二十)scanf函数详解
- (二一)内联函数
- (二二)位操作
- (二三)errno变量
- (二四)内存分配