| 网站首页 | 业界新闻 | 群组 | 交易 | 人才 | 下载频道 | 博客 | 代码贴 | 编程论坛
大量收QQ微信精准粉/交友粉,非诚勿扰千里之行 始于足下
共有 546 人关注过本帖, 1 人收藏
标题:利用循环语句,输入字符时,缓冲区里存的\n怎么处理啊??
只看楼主 加入收藏
a47665335
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2014-11-25
结帖率:85.71%
  已结贴   问题点数:20  回复次数:5   
利用循环语句,输入字符时,缓冲区里存的\n怎么处理啊??
#include<stdio.h>
int main()
{
char c;
int flag=1;
    while(flag)
    {
        printf("continue or not(Y/N)?");
scanf("%c",&c);
if (c=='N'||c=='n')
flag=0;
    }
    return 0;
}
输入N、n以外的其他字符循环会运行两次..
利用循环语句,输入字符时(字符+回车),缓冲区里存的\n怎么处理啊??
请前辈们指教..
搜索更多相关主题的帖子: 缓冲区  return  continue  
2014-12-21 16:06
longwu9t
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:6
帖 子:732
专家分:2468
注 册:2014-10-9
  得分:20 
程序代码:

#include<stdio.h>

int main(void) {
    char c, clearInput[10000];
    int flag = 1;

    while(flag) {
        printf("continue or not...(Y/N)\n");
        scanf("%c", &c);
        while(fgets(clearInput, 10000, stdin)) break;

        if(c == 'N' || c == 'n') {
            flag = 0;
        }
    }

    return 0;
}

Only the Code Tells the Truth             K.I.S.S
2014-12-21 17:10
潇湘书生
Rank: 2
等 级:论坛游民
威 望:1
帖 子:23
专家分:89
注 册:2014-12-9
  得分:0 
回复 2楼 longwu9t
请问这两者的本质区别在哪里,谢谢
2014-12-21 17:15
longwu9t
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:6
帖 子:732
专家分:2468
注 册:2014-10-9
  得分:0 
输入的第一个字符被scanf赋值给了c
stdin里如果还缓冲着其它字符
会给下一次循环造成麻烦 缓冲区里较早的值会先赋值给c 包括回车、空格

用fgets将stdin里干挠循环的字符全部吃到一个没用的字符数组(clearInput)里了
包括回车 空格等

这样就约束输入的第一个字符才为有效赋值

Only the Code Tells the Truth             K.I.S.S
2014-12-21 17:28
a47665335
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2014-11-25
  得分:0 
回复 2楼 longwu9t
fgets什么的 还没学过  先mark学了再来看..

谢谢指点!
2014-12-22 13:14
yahwei
Rank: 7Rank: 7Rank: 7
来 自:湖~
等 级:黑侠
威 望:3
帖 子:145
专家分:644
注 册:2011-11-10
  得分:0 
以下是引用a47665335在2014-12-21 16:06:30的发言:

#include<stdio.h>
int main()
{
char c;
int flag=1;
    while(flag)
    {
        printf("continue or not(Y/N)?");
scanf("%c",&c);
if (c=='N'||c=='n')
flag=0;
    }
    return 0;
}
输入N、n以外的其他字符循环会运行两次..
利用循环语句,输入字符时(字符+回车),缓冲区里存的\n怎么处理啊??
请前辈们指教..

在scanf("%c",&c)这句后面加上一个判断:if ( c == '\n' ) continue;

[qq]949654600[/qq]
2014-12-23 09:30







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

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