【C语言】getchar()和gets()以及scanf()的区别使用

  1. getchar()-->字符数据输入
  • 函数原型:int getchar(void);
  • 返回类型:  整型类型。如果用一个整型变量接收,接收到的是一个字符

例如:int ch=getchar();//ch必须是整型变量来接收getchar(),此时用%c输出ch可以输出输入的字符

 补充:EOF全称是End Of File(C语言标准函数库中表示文件结束符),通常在文本的最后表示资料结束。C语言中数据都是以字符的ASCII代码值来存放的。ASCII代码值得范围是0~127,不可能出现-1,因此可以用EOF作为文件结束标志,我们可以把EOF作为‘-1’理解。EOF是getchar()的结束标志

 注意:键盘输入的内容或者往显示器中打印的内容,全部都是字符

  • 用getchar()输入多个字符

while (getchar() != '\n') 

whlie((b=getchar())!='\n')//注意:b必须是整型类型

while(scanf("%c",&a)!=E0F)//这种也是可以的

  • getchar()与scanf()输入字符的区别

getchar()可以读取空格,回车等,而scanf遇到空格回车时会结束读取。所以字符串中有空格,回车等字符时一般使用getchar while循环体来输入一串字符。除此之外,当我们用scanf输入一串字符后按下回车键,scanf只会从缓冲区取走\n之前的字符,这时要想继续使用scanf,就要用getchar()来接收缓冲区的\n(如果这里不用getchar接收\n而在缓冲区里保留\n,下一次使用scanf时如果输入一个字符,则scanf会不等我们输入直接读走\n,如果用scanf输入的是字符串,则系统还是会等待我们输入的)

scanf()相比于getchar()来说,scanf可以读取各种类型的数据,包括字符,字符串,整型,浮点型,地址等,而getchar()只能读取一个字符

   2.gets()-->读取字符串

  • 函数原型:char*gets(char*str);
  • 基本用法

gets(字符串首地址)

例如,char str[20];  gets(str);

  • getsr()与scanf()输入字符的区别

gets()可以接受空格 Tab等,碰到回车键输入会结束;scanf()碰到空格 回车 Tab键都会结束。gets()输入字符串更加简洁,可以取代scanf("%s",string);

gets读入成功时返回字符串首地址,出错时返回NULL;scanf返回值为int类型,成功返回赋值的变量个数,当遇到文章结尾时返回EOF

需要注意的是,使用gets()函数时,系统会将最后输入的换行符从缓冲区取出来,并用\0代替\n,所以缓冲区不会留下字符,因此不需要使用getchar()来吸收回车符了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值