C语言-gets与scanf--------if else 与 if if 的区别

gets与scanf的区别:

二者都是从终端读入字符串。功能为
1、 gets功能为读入一行,并将换行符转换为字符串结束符。
2、 scanf("%s",s);读入时,遇到空白字符,包括空格,制表符,换行符时均会停止输入。

从功能上可以看出不同之处:
1 终止条件不同。gets只有遇到\n时才会结束输入,而scanf遇到空格或制表符时,也会结束输入。
比如输入"test string\n"。
用gets得到的字符串为"test string", 二用scanf得到的是"test"。

2 终止后,对终止字符处理不同。
比如输入为"test\nabcd"。
执行gets后,\n不会留在缓冲区中,即这时调用getchar得到的字符是'a'。
执行scanf后,\n会留在缓冲区,这时调用getchar得到的字符是'\n'。
1
2
3
4
5
6
7
8
9
10
11
12
13
# include <iostream>
# include <cstdio>
# include <cstring>
using namespace std;

int main(){

char st[1005];
char tp[1003];
int i,j,k,len1,len2;

while(scanf("%s",st),st[0]!='#'){
gets(tp);
//scanf("%s",tp);

cout<<tp<<endl;
}

return 0;
}

scanf 只能读入连续的字符串 不能存在空白字符,包括空格,制表符,换行符。

if else 与 if if的区别:

if (条件1)
{
//语句1
}

if (条件2)
{
//语句2
}
这种格式中,程序会依次判断条件1和条件2是否成立并根据结果决定是否执行语句1和语句2,也就是说,第一个 if 块和第二个 if 块

没有影响(除非在执行第一个 if 块的时候就凶残地 return 了)

而下面这种格式:

if (条件1)
{
//语句1
}
else if (条件2)
{
//语句2
}
if 块和 else if 块本质上是互斥的!也就是说,一旦语句1得到了执行,程序会跳过 else if 块,

else if 块中的判断语句以及语句2一定会被跳过;同时语句2的执行也暗含了条件1判断失败和语句1没有执行;

当然还有第3个情况,就是条件1和条件2都判断失败,语句1和语句2都没有得到执行。

连续使用的 if是相互独立的,如果使用if else if 第一个if 满足条件的话 之后的else 就不会进行。

posted @   zzzfffffff  阅读(149)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示