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 就不会进行。
标签:--------,语句,scanf,else,读入,条件,gets From: https://www.cnblogs.com/030622zfy-/p/16770580.html