C语言字符串输入输出函数(gets()函数、puts()函数、fgets()函数、fputs()函数)
-
scanf("%s", str)
不能读取空白字符,遇到第一个空白字符就停止读取。 -
gets(str)
读取整行输入,直至遇到换行符,丢弃换行符储存其余字符,并在末尾添加\0
。与puts(str)
配合使用,puts()
用于显示字符串,并在末尾添加换行符。
因为 gets(str)
函数仅有一个参数,因此无法检测是否会溢出,因此出现了 fgets()
函数。
-
fgets(str, n, stdin)
从键盘输入最多 n-1 个字符至 str 数组中。此函数还需注意:- 第一个参数为目标地址,第二个参数为可读入的最大字符数目,如果为 n,则最大读入 n-1 个字符,或者读到换行符停止。
- 第三个参数为文件指针,此函数同样也可用于文件I/O,只需使第三个参数为相应的文件指针,此处从键盘读取,故使用标准输入 stdin。
- 若
fgets()
读到换行符,则将其一同存储,不同于gets()
函数。 fgets()
与fputs()
函数配对使用,因为fgets()
读到换行符不丢弃,因此fputs()
输出时不在末尾添加换行符。因此,fgets()
和fputs()
配合可以理解为读到什么,就存什么;存了什么,就显示什么。- 如果此函数读取发生错误或读至文件末尾,会返回 NULL。
-
puts(str)
显示 str 数组中的字符,直至遇到空字符停止输出,并在末尾添加一个换行符。 -
fputs(str, stdout)
显示 str 中的字符。其第二个参数是文件指针,同样也可以使用具体的文件指针将字符串写入文件中。
配对使用:
while(gets(str))
puts(str);
或者
while(fgets(str, LEN, stdin))
fputs(str, stdout);