标题:利用循环语句,输入字符时,缓冲区里存的\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



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-440206-1-1.html




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

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