吃掉回车的方法

使用情景:相信很多同学刚开始时都对什么时候要吃掉回车什么时候不用吃掉回车感到很迷惑,被折磨的心力交瘁,恨不得自己吃掉它。

这里我做出解释:
当你输入的是整型数,浮点数这些数据时可以认为%d %f不会识别回车,自然也就不用考虑吃掉回车这个问题。
当你输入的是字符型数据时,%c或%s就会人的空格这个小子了。如:scanf(“%d%s”,&t,&arr);往往会因为在你输入完t后按下的回车被%s当成一个字符抓住而导致arr的第一个元素是空格,并且你会输入时超界。

下面是我知道的解决方法:
例:测试数据有多组,每组输入两行:
第一行:输入 k b (含义如上)(k>0, b >= 0)
第二行:输入待解密的字符串(长度不超过5000)

1.getchar()

while(scanf("%d%d",&k,&b)!=EOF)
    {   
        getchar();
        gets(arr);
    }

2.%*c
这个符号的意思是接受一个字符并结束。
大家打码时要记住这个是只吃掉一个字符的所以是c不是s;

while(scanf("%d%d%*c",&k,&b)!=EOF)
    {   
        gets(arr);
    }

%*c要用到你scanf的最后面因为它已收到回车就会结束了,如果写成

while(scanf("%d%d%*c%s",&k,&b,&arr)!=EOF)
    ;

这是错误的,arr不会被输入完全

猜你喜欢

转载自blog.csdn.net/qq_40618238/article/details/78904277