初级启示者
scanf和gets(getline)的用法和区别
(1)scanf:
格式:scanf("%.s",字符串变量的名称);
在这里,不加取地址符(&);加上s输出什么都没有
如果你想输入多个字符,中间要以空格隔开,如下
scanf("%s%s%s",s1,s2,s3);
否则只会输出第1个空格前的s1
(2)gets(getline):
格式:gets(字符串变量名称);
注意:这里一个gets只能输入一个字符串
那有人就要问了,想输入多个怎么办?
没错,在下面在加一个gets呗!如下
gets(s1);
gets(s2);
接下来就是他们的区别了;
你只用一个 scanf/gets
会有什么不同呢?
如果输入 Let us go
输出会怎么样呢?
答案:scanf会输出只是Let,而gets会全部输出
这时,有人就会说了,gets比scanf更好用,为什么还要有scanf的存在呢?
别着急下结论
如果是将一组字符串倒着输出呢?
scanf将字符串变量反过来就可以了
但是,gets却要进行很麻烦的运算
这样看来,还是scanf简单
以上就是今天的讲解了,这是我第一次分享,请大家多多包容!
大家也可以参考奥赛书
不过,我觉得我讲的比奥赛书详细
练习:(想做就做)
题目描述
大家都知道一些办公软件有自动将字母转换为大写的功能。输入一个长度不超过 100 且不包括空格的字符串。要求将该字符串中的所有小写字母变成大写字母并输出。
输入格式
无
输出格式
无
输入输出样例
输入 1
Luogu4!
输出 1
LUOGU4!
董宇昊在2020-06-28 17:32:35追加了内容
有错误可以提出来
初级启示者
奥赛书比你说的详细多了,标题中gets(getline)是什么鬼?全文没一个字提到了“getline”
正如你所说的,你就也发一次 ,所以请好好听课学习,不要水了!
赵逸凡在2020-06-28 17:44:20追加了内容
@董宇昊 getline我学过,跟gets并不一样,不要弄混了!