鱼C论坛

 找回密码
 立即注册
查看: 3303|回复: 5

为什么出现两个?

[复制链接]
发表于 2011-10-7 14:33:00 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
/*字母大小写相互转换*/


void main()
{
        char c;
        printf("请输入一个字母:\n");
        scanf("%c",&c);
        while(  c < 65  )
        {
                printf("输入错误,请重新输入:\n");
                scanf("%c",&c);
        }
}




还没写完,发现问题。。
远行出现两个:输入错误,请重新输入:



怎么回事???

小甲鱼最新课程 -> https://ilovefishc.com
发表于 2011-10-7 14:47:21 | 显示全部楼层
本帖最后由 yipwing 于 2011-10-7 14:51 编辑
  1. void main()
  2. {
  3.         char c;
  4.         printf("请输入一个字母:\n");
  5.         scanf("%c",&c);
  6.         while(  c < 65  )
  7.         {
  8.                 printf("输入错误,请重新输入:\n");  //循环的时候会再次从这里开始,所以有两次
  9.                 getchar();  //输入输出流的问题,抱歉刚才我那个有问题。。。
  10.                 scanf("%c",&c);
  11.         }
  12. }
复制代码
这样在去试试!!
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2011-10-7 15:29:10 | 显示全部楼层
  1. char c;
  2.     printf("请输入一个字母:\n");
  3.     scanf("%c",&c);
  4.     fflush(stdin);
  5.     while(  c < 65  )
  6.     {
  7.         printf("输入错误,请重新输入:\n");
  8.         scanf("%c",&c);
  9.         fflush(stdin);
  10.     }
复制代码


fflush,而不是getchar
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2011-10-7 15:34:13 | 显示全部楼层
rover12421 发表于 2011-10-7 15:29
用fflush,而不是getchar

他现在还没学到这个,以后会用到的时候在用,要不现在他看见这个函数又开始莫名其妙了。。
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2011-10-8 01:00:56 | 显示全部楼层
本帖最后由 $方 于 2011-10-8 01:11 编辑

继续请教~~~~~~~
  1. #include<stdio.h>

  2. void main()
  3. {
  4. #if(0)
  5.         int i;
  6.         printf("请输入一个整数:\n");
  7.         scanf("%d",&i);
  8.         while( 5 != i )
  9.         {
  10.                 printf("输入错误,请重新输入:\n");
  11.                 scanf("%d",&i);
  12.         }
  13. #endif
  14. #if(1)
  15.         char i;
  16.         printf("请输入一个字母:\n");
  17.         i = getchar();
  18.         while( i != 65 )
  19.         {
  20.                 printf("输入错误,请重新输入:\n");
  21.                 i = getchar();
  22.         }
  23. #endif
  24. }
复制代码
上面判断整数是正常,判断字符时出现2个:"输入错误,请重新输入:"

请教大侠详细说下,,谢谢了
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2011-10-8 01:17:10 | 显示全部楼层
本帖最后由 yipwing 于 2011-10-8 01:26 编辑

你那两个#if 是啥意思? 故意让程序分成两个段?
  1. #include<stdio.h>

  2. void main()
  3. {
  4. #if(0)
  5.         int i;
  6.         printf("Input a number:\n");
  7.         scanf("%d",&i);
  8.         while( 5 != i )
  9.         {
  10.                 printf("Oops,Error:\n");

  11.                 scanf("%d",&i);
  12.         }
  13. #endif
  14. #if(1)
  15.         char i;
  16.         printf("input a word:\n");
  17.         scanf("%c",&i);
  18.         while( i < 65 )
  19.         {
  20.                 printf("Error, please input again:\n");
  21.                 getchar();
  22.                 scanf("%c",&i);
  23.         }
  24. #endif
  25. }
复制代码

道理是一样的,问题是getchar()接收一个换行符结束,但是用多了,也会有问题。。
如果你明白输入输出流你就用fflush,不明白的话,就别纠结这个问题。。继续往后面学习。。。
这个问题 在CSDN上steedhorse说过,貌似是Windows CRT的问题。
连接在这里,自己去看 http://topic.csdn.net/t/20060120/20/4528331.html

评分

参与人数 1鱼币 +5 收起 理由
小甲鱼 + 5 乐于助人!

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-9-21 02:20

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表