更新时间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得到的字符是'
'。
上一篇:循环系统用什么水流开关合适
下一篇:舆情有哪些属性