免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: jason8155
打印 上一主题 下一主题

请教改改这个程序 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2005-07-31 22:00 |只看该作者

请教改改这个程序

晕,不行
还是建议楼主不要getchar和sscanf一起用
刚上百度查了下,N多人遇到过这个问题.

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
12 [报告]
发表于 2005-07-31 22:11 |只看该作者

请教改改这个程序

或者是 在scanf后面再加个getch.没什么的 只是感觉C在这方面处理的不够好.

论坛徽章:
0
13 [报告]
发表于 2005-07-31 22:14 |只看该作者

请教改改这个程序

#include <stdio.h>;
#include <unistd.h>;
#include <termios.h>;
int main()
{
        int i,j;
        char c;
        char ch='0';
        printf("\n do you want to cal:y/n \n";

        while(c=getchar()=='y')
        {
                printf("input number:";
                scanf("%d%d",&i,&j);
                printf("i*j=%d\n",i*j);
                printf("go on?(y/n)";
                getchar();
        }
return 0;
}

我靠,刚找到就被你说了,不过不用getch(linux里面只有cureses库里面有)
单独一个getchar也有这个功能

论坛徽章:
0
14 [报告]
发表于 2005-07-31 22:15 |只看该作者

请教改改这个程序

由于 fflush 不应该使用在 stdin 上,所以我们使用其它方法来解决,例如在 scanf 后面,加上一行  getchar(); ,把没有清理的 newline char 消除

    printf("lease input num:";
    scanf("i=%d j=%d",&i,&j);
    getchar();  // clear newline

论坛徽章:
0
15 [报告]
发表于 2005-07-31 22:18 |只看该作者

请教改改这个程序

fflush(stdin)不能用?

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
16 [报告]
发表于 2005-07-31 22:26 |只看该作者

请教改改这个程序

我开始以为 能用 后来发现不能用.
正在思考.
  1. #include <stdio.h>;

  2. int main()
  3. {
  4.     char c;
  5.     int i,j;

  6.     printf("welcome input y/n :");
  7.     while((c=(char)fgetc(stdin))=='y')
  8.     {
  9.         printf("input two number:");
  10.         scanf("%d%d",&i,&j);
  11.         printf("i*j=%d\n",i*j);
  12.         printf("y/n:");
  13.         getch();
  14.     }
  15.     return 0;
  16. }
复制代码


刚才帮楼主 在TC上测试了.

论坛徽章:
0
17 [报告]
发表于 2005-07-31 22:38 |只看该作者

请教改改这个程序

简单的一个getchar就把缓冲清空了
看来这些小细节还是得记住啊
看到linuxforum里面几个牛人在那里疯狂的往深层里面想,真汗

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
18 [报告]
发表于 2005-07-31 22:58 |只看该作者

请教改改这个程序

他们可能讨论 流机制吧??

论坛徽章:
0
19 [报告]
发表于 2005-07-31 23:01 |只看该作者

请教改改这个程序

不是,就是怎么清除键盘缓冲

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
20 [报告]
发表于 2005-08-01 10:02 |只看该作者

请教改改这个程序

[quote]原帖由 "mq110"]恩 需要fflush(stdin)的.在每次scanf之前.[/quote 发表:


其实,这不时标准的做法。手册里没多fflush函数应用在输入流中的行为做出规定,虽然它总是这样工作的。

我也不知道什么更好的办法来清除输入流。我一般的做法就是使劲读,^_^。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP