| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2596 人关注过本帖
标题:输入整数后再输入字符串过滤掉上次输入的换行符
只看楼主 加入收藏
令狐少侠56
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:320
专家分:175
注 册:2014-4-10
结帖率:58.18%
收藏
已结贴  问题点数:20 回复次数:6 
输入整数后再输入字符串过滤掉上次输入的换行符
先输入整数再输入字符串,如果用scanf("%d",&a)那么字符串还没输入就结束了
我在网上查了下应该是换行符在缓冲区的原因。
然后网上有人说,scanf 用空白符结尾时,scanf会跳过空白符去读下一个字符,所以你必须再输入一个数;
可是我不明白用scanf("%d\n",&a);后为什么换行符不会被字符串读取了
http://blog.

程序代码:
#include <iostream>
#include <string>

using namespace std;

int main(     )
{
    string str1;
    string str2;

    int a;
    scanf_s("%d\n", &a);
    getline(cin,str1);
    getline(cin, str2);
    cout << str1<<endl;
    cout << str2 << endl;

    scanf_s("%d\n", &a);                  //这里多了一个回车符\n             
    if (a % 4 != 0)
        printf("the num is no 闰年\n");
    else if (a % 100 && a % 400 != 0)
        printf("the num is no 闰年\n");
    else
        printf("the num is 闰年\n");

    return 0 ;
}
搜索更多相关主题的帖子: 换行符 字符串 缓冲区 网上 
2016-11-01 15:03
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:5 
scanf的常规用法 后面都不跟\n的  除非非常变态的需求吧

DO IT YOURSELF !
2016-11-01 15:05
StadyC
Rank: 6Rank: 6
等 级:侠之大者
威 望:6
帖 子:182
专家分:430
注 册:2016-10-13
收藏
得分:5 
其实过滤掉上一次的换行符很简单,只需要再加一个getchar()来接收那个换行
2016-11-02 17:03
BBOY愿愿
Rank: 3Rank: 3
来 自:四川
等 级:论坛游民
威 望:9
帖 子:60
专家分:67
注 册:2015-12-9
收藏
得分:5 
3 楼的 很好    if(x =getchar('\n'))............

其实你可以很优秀------对自己说-----即使遍体鳞伤也要活得漂亮-------
2016-11-02 18:20
StadyC
Rank: 6Rank: 6
等 级:侠之大者
威 望:6
帖 子:182
专家分:430
注 册:2016-10-13
收藏
得分:0 
回复 4楼 BBOY愿愿
你要注意getchar是没有参数的。

过滤掉上次的换行符,大概这样,如果要求连续输入两个字符:
char ch1, ch2;
ch1 = getchar();
//如果这个时候直接ch2 = getchar();呢,会有一个问题,就是ch2不需要输入就会跳到下一步,因为ch2接收了回车键。
getchar();    //解决上述问题可以在这里加一句getchar()用来接收输入ch1时遗留的'\n'(回车键)。
ch2 = getchar();    //这样输入ch2就没有问题了。
getchar();    //同理接收回车键。

当然了,按照C Primer Plus那个方法也是可以的,只不过我觉得有点麻烦。
2016-11-03 11:11
书生牛犊
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:星夜征程
等 级:贵宾
威 望:10
帖 子:1101
专家分:5265
注 册:2015-10-27
收藏
得分:5 
先输入整数再输入字符串,如果用scanf("%d",&a)那么字符串还没输入就结束了    应该不至于吧。。。scanf()会自动跳过前面的空白符(除了在读%c的时候)

图片附件: 游客没有浏览图片的权限,请 登录注册


φ(゜▽゜*)♪
2016-11-03 15:24
令狐少侠56
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:320
专家分:175
注 册:2014-4-10
收藏
得分:0 
回复 6楼 书生牛犊
c语言看的是谭浩强的那本书,感觉内容少了。
2016-11-04 10:10
快速回复:输入整数后再输入字符串过滤掉上次输入的换行符
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016683 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved