| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 893 人关注过本帖
标题:初学者遇到的奇怪小问题
只看楼主 加入收藏
小小程序猿
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:1
帖 子:755
专家分:2785
注 册:2013-7-18
收藏
得分:0 
以下是引用TonyDeng在2013-7-20 13:49:41的发言:

你用下面的代码自己琢磨一下吧:

#include <stdio.h>

void main(void)
{
    char a;
    printf_s("请输入密码: ");
    fflush(stdin);
    printf_s("%d ", scanf_s("%c", &a, 1));
    printf_s("%c,%x\n", a, a);
    while (a != 'z')
    {
        printf_s("错误\n");
        printf_s("请输入密码: ");
        fflush(stdin);
        printf_s("%d ", scanf_s("%c", &a, 1));
        printf_s("%c,%x\n", a, a);
    }
    printf_s("欢迎");
    fflush(stdin);
    getchar();
}

fflush(stdin);是实现什么功能的?????????????

孤独与寂寞是催化一个人迅速成长的良药,没有之一
2013-07-20 15:02
小小程序猿
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:1
帖 子:755
专家分:2785
注 册:2013-7-18
收藏
得分:0 
以下是引用love云彩在2013-7-20 14:15:41的发言:


就是不知道怎么解释为何会输出2个“错误”。
先执行第一条scanf语句,这是我输入a,然后进入while循环,先执行判断语句,a!='z',然后执行后面的printf("错误");这时候不是应该执行第二条scanf语句了吗?为何会再执行了一次printf("错误");如果按照编译器运行的顺序来看:首先是执行第一条scanf语句,然后到了while循环体,先执行循环体的语句,再执行判断语句,因为前面已经输入了a的值,所以不再执行第二条scanf语句,先是执行循环体printf语句,然后执行判断语句,第一次循环结束后,如果a!='z',则继续执行循环体里面的printf();这时才开始执行循环体里面的scanf语句,之后的整个过程都在while里面,直到输入正确为止才退出循环体。
这是我根据运行结果来解释整个过程,不知道正不正确

我也调试了,还是不明白为什么出现两个错误

孤独与寂寞是催化一个人迅速成长的良药,没有之一
2013-07-20 15:07
love云彩
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:青藏高原
等 级:贵宾
威 望:53
帖 子:3663
专家分:11416
注 册:2012-11-17
收藏
得分:0 
以下是引用小小程序猿在2013-7-20 15:07:43的发言:

 
我也调试了,还是不明白为什么出现两个错误
我觉得我刚才那段解释还合理,就是不知道你能不能理解

思考赐予新生,时间在于定义
2013-07-20 15:24
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
叫你仔细琢磨我上面那个代码的。fflush(stdin)是清除控制台输入缓冲区数据的函数。

授人以渔,不授人以鱼。
2013-07-20 15:49
快速回复:初学者遇到的奇怪小问题
数据加载中...
 
   



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

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