免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 4041 | 回复: 15
打印 上一主题 下一主题

[C] 关于fgetc()的一个问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-04-06 22:42 |只看该作者 |倒序浏览
#include "golbal.h"

int main(int argc, char *argv[])
{
        char in;
        while(1)
        {
                fprintf(stdout,"--------------------------------------------\n");
                fprintf(stdout, "1.Add student's information.\n");
                fprintf(stdout, "2.Delete student's information.\n");
                fprintf(stdout, "3.Find by student's name.\n");
                fprintf(stdout, "4.Print student's form.\n");
                fprintf(stdout, "5.Order output.\n");
                fprintf(stdout, "6.Export database result as text file.\n");
                fprintf(stdout, "7.Copy database.\n");
                fprintf(stdout, "8.Import copied database.\n");
                fprintf(stdout, "9.Exit\n");
                fprintf(stdout, "-------------------------------------------\n\n");
                fprintf(stdout, "Please select...\n");
               
                in = fgetc(stdin);
                sleep(1);

                switch(in)
                {
                        case '1':
                                fprintf(stdout, "%c\n", in);
                                break;

                        case '2':
                                fprintf(stdout, "%c\n", in);
                                break;
                        case '3':
                                fprintf(stdout, "%c\n", in);
                                break;
        
                        case '4':
                                fprintf(stdout, "%c\n", in);
                                break;

                        case '5':
                                fprintf(stdout, "%c\n", in);
                                break;

                        case '6':
                                fprintf(stdout, "%c\n", in);
                                break;

                        case '7':
                                fprintf(stdout, "%c\n", in);
                                break;

                        case '8':
                                fprintf(stdout, "%c\n", in);
                                break;

                        case '9':
                                exit(0);
                                break;
                        
                        defalut:
                                fprintf(stdout, "Without this option!\n");
                                break;

                }


        }

        return 0;

}


就是这个测试程序 为什么每次选择后列表会多打印一次?难道我输入的回车也读到当做第2次输入?还有就是default无效。

论坛徽章:
0
2 [报告]
发表于 2008-04-06 22:52 |只看该作者
在 in = fgetc(stdin); 之后加一句 fflush(stdin);就行  读回车了

论坛徽章:
0
3 [报告]
发表于 2008-04-06 22:55 |只看该作者
fgetc你的回车被读入缓冲区了

论坛徽章:
0
4 [报告]
发表于 2008-04-06 22:58 |只看该作者
单词打错了 当然无效

论坛徽章:
0
5 [报告]
发表于 2008-04-06 22:58 |只看该作者
defalut  -- misspell

论坛徽章:
0
6 [报告]
发表于 2008-04-06 22:58 |只看该作者
default无效怎么回是?

论坛徽章:
0
7 [报告]
发表于 2008-04-06 23:08 |只看该作者
我试了加ffush(stdin)也不好使啊 还是一样出两遍列表
用fscanf()以字符串输入好使

[ 本帖最后由 奥丁@ 于 2008-4-6 23:22 编辑 ]

论坛徽章:
0
8 [报告]
发表于 2008-04-06 23:09 |只看该作者
fflush
default

论坛徽章:
0
9 [报告]
发表于 2008-04-06 23:24 |只看该作者
我程序里写的是fflush啊

论坛徽章:
0
10 [报告]
发表于 2008-04-06 23:26 |只看该作者
总之呢就是你多读了 回车
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP