c语言里switch语句里面能不能写scanf和gets呢? - 爱问答

(爱问答)

c语言里switch语句里面能不能写scanf和gets呢?

#include stdio.h 
main() 

int choose; 
char a[20]; 
scanf("%d",&choose); 
switch(choose) 

case 1: 
gets(a); 
// scanf("%s",a); 
puts(a); 
break; 
default: 
break; 


如果使用scanf("%s",a);编译运行均正确. 
如果使用gets(a);编译可以通过,运行到gets(a);输入字符串时,直接跳过,也就是当这句不存在一样.真诚期待你的帮助!

两者均可使用,但有分别:

gets 字符串中可以有空白符号,遇到回车终止输入;
scanf("%s")遇到第一个空白符号或者回车停止输入。


具体地:

二者都是从终端读入字符串。功能为:
1、 gets功能为读入一行,并将换行符转换为字符串结束符;
2、 scanf("%s",s);读入时,遇到空白字符,包括空格,制表符,换行符时均会停止输入。
从功能上可以看出不同之处:
1 终止条件不同 - gets只有遇到 时才会结束输入,而scanf遇到空格或制表符时,也会结束输入;
比如输入"test string "。
用gets得到的字符串为"test string",二用scanf得到的是"test"。
2 终止后,对终止字符处理不同:
比如输入为"test abcd"
执行gets后, 不会留在缓冲区中,即这时调用getchar得到的字符是'a'。
执行scanf后, 会留在缓冲区,这时调用getchar得到的字符是' '。

相关标签:c语言

下一篇:舆情有哪些属性

上一篇:循环系统用什么水流开关合适

热门标签:
excel 网盘 破解 word dll
最新更新:
微软重新评估新的Outlook的使用时机 联想推出搭载联发科Helio G80芯片组的Tab M9平板 英特尔创新大赛时间确定! 微软Edge浏览器在稳定渠道中推出Workspaces功能 英伟达RTX4060TiGPU推出MaxSun动漫主题! 谷歌地图为用户提供了街景服务! GameSir 在T4 Kaleid中推出了一款出色的控制器! 微软开始在Windows 11 中测试其画图应用程序的新深色模式! LG电子推出全球首款无线OLED电视 英伟达人工智能芯片崭露头角! Steam Deck可以玩什么游戏-Steam Deck价格限时优惠 雷蛇推出CobraPro鼠标 Kindle电子阅读器可以访问谷歌商店吗 Windows10如何加入组策略 window10图片查看器怎么没有了?