| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1215 人关注过本帖
标题:帮忙看看哪里出问题了~~~~~代码没有语法错误,但是运行上不符合我的想法
只看楼主 加入收藏
日的起烟烟
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:137
专家分:129
注 册:2010-2-27
收藏
得分:0 
老实说··我对FFLUSH函数也不是很清楚··

我只是见到书上说过过··对输入流使用该函数的效果是没有定义的···

上面只是给了这样一句··其他没有多说··当时我也觉得奇怪··既然有刷新输出··也该可以刷输入啊··

书是C PRIMER PLUS

我这里还有一本书我查查看这个函数能不能你提供些信息··

2010-10-12 21:22
我菜119
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:938
专家分:1756
注 册:2009-10-17
收藏
得分:0 
回复 21楼 日的起烟烟
呵呵!原来只是误记呀!!!不过期待版主的解释!!听听有什么新的见解!!本人也是菜鸟!

愿用余生致力编程
2010-10-12 21:28
日的起烟烟
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:137
专家分:129
注 册:2010-2-27
收藏
得分:0 
这是我在网上搜到的:

C和C++的标准里从来没有定义过 fflush(stdin)。也许有人会说:“可是我用 fflush(stdin) 解决了这个问题,你怎么能说是错的呢?”的确,某些编译器(如VC6)支持用 fflush(stdin) 来清空输入缓冲,但是并非所有编译器都要支持这个功能(linux 下的 gcc 就不支持),因为标准中根本没有定义 fflush(stdin)。MSDN 文档里也清楚地写着fflush on input stream is an extension to the C standard(fflush 操作输入流是对 C 标准的扩充)。当然,如果你毫不在乎程序的移植性,用 fflush(stdin) 也没什么大问题。以下是 C99 对 fflush 函数的定义:
  int fflush(FILE *stream);
  如果 stream 指向输出流或者更新流(update stream)。fflush 函数将把这个流中任何待写数据传送至宿主环境(host environment)写入文件。否则,它的行为是未定义的。
  原文如下:
  int fflush(FILE *stream);
  If stream points to an output stream or an update stream in which the most recent operation was not input, the fflush function causes any unwritten data for that stream to be delivered to the host environment to be written to the file; otherwise, the behavior is undefined.
  其中,宿主环境可以理解为操作系统或内核等。
  由此可知,如果 stream 指向输入流(如 stdin),那么 fflush 函数的行为是不确定的。故而使用 fflush(stdin)  是不正确的,至少是移植性不好的。
2010-10-12 21:40
我菜119
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:938
专家分:1756
注 册:2009-10-17
收藏
得分:0 
回复 23楼 日的起烟烟
呵呵!茅塞顿开呀!!!!谢谢版主!!辛苦了呀

愿用余生致力编程
2010-10-12 21:49
日的起烟烟
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:137
专家分:129
注 册:2010-2-27
收藏
得分:0 
晕死···我不是版主··
2010-10-12 21:50
xx342508809
Rank: 2
等 级:论坛游民
帖 子:89
专家分:51
注 册:2010-7-28
收藏
得分:0 
#include<stdio.h>
void main()
{
    float a,b;
    char c;
    printf("Please input b\n");
    scanf("%f",&b);
    do
    {
        scanf("%c",&c);
        if(c=='=')
            break;
        scanf("%f",&a);
        switch(c)
        {
        case '+':printf("%f",b+=a);break;//问题出在+和-这里了,为什么输入后计算不连贯了例如23+40=75*或者除80=某个数+或者-1000按Enter不得出数据为什么//
        case '-':printf("%f",b-=a);break;
        case '*':printf("%f",b*=a);break;
        case '/':printf("%f",b/=a);break;
        }
        fflush(stdin);
    }while(1);
    printf("%f",b);
}
谢谢~~日的起烟烟~~~~~~~~~~~这样代码就是对的了~~~~~~~~~~~~~~~
2010-10-13 11:49
xx342508809
Rank: 2
等 级:论坛游民
帖 子:89
专家分:51
注 册:2010-7-28
收藏
得分:0 
谢谢日不起的烟烟对fflush的详细解释~~~~~~~~看来要多看书才行啊~~~~~~~~~~~~
2010-10-13 11:51
快速回复:帮忙看看哪里出问题了~~~~~代码没有语法错误,但是运行上不符合我的想法 ...
数据加载中...
 
   



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

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