首页 > 电脑

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

更新时间2019-04-28 06:33:51

#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语言

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

下一篇:舆情有哪些属性