gets、puts函数和fgets、fputs函数的区别与联系

1.gets函数

在读取字符串时,scanf函数和%s转换说明符只能读取一个单词,于是早期就由gets函数承担了读取整行字符串的作用。gets函数读取整行输入,直至遇到换行符,然后丢弃换行符,接着储存其余字符,并在这些字符的末尾自动添加一个空字符,使其成为一个字符串。gets函数经常搭配puts函数使用,后者用于显示字符串,并在末尾自动添加换行符(即空出一行)。
使用方法如下:

char words[8];
printf("Please enter a string:\n");
gets(words);

不过在最新的C11标准中,gets函数已不被允许。比如visual studio 2019就无法使用gets函数。

2.fgets函数

fgets函数专门设计用于处理文件输入。fgets函数有三个参数,第二个参数为读取字符的最大数量,例如设定为n后,fgets函数将会读取n-1个字符,最后一个为换行符。第三个参数指明要读入的文件,要读入键盘输入的数据则以stdin作为参数。
fgets函数通常与fputs函数配合使用,fputs函数有2个参数,第二个参数指明要写入的文件,要显示在显示器上则以stdout作为参数。fputs函数不会再待输出字符串末尾添加换行符。
使用方法如下:

#include <stdio.h>
int main(void)
{
	char words[8];
	puts("Please enter a string:");
	fgets(words, 8, stdin);
	fputs(words, stdout);
	
	return 0;
}

在这里插入图片描述

注:空格也算一个字符
如果超过了字符限制,后续的字符将不再读入。
scanf函数与以上两个函数不同之处在于,scanf类似于在读取单词,从第一个非空字符开始,到下一个空白字符结束,如果制定了宽度,如%10s,那么scanf将读取10个字符或读到空格停止。
(scanf返回值为成功读取的项数或EOF)

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值