鱼C论坛

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

关于scanf用法的问题???

[复制链接]
发表于 2013-3-14 16:19:21 | 显示全部楼层 |阅读模式
10鱼币
下面是源代码:
         # include  <stdio.h>
# include  <ctype.h>
int main (void)
{
     double  menber1 = 0;
     double  menber2 = 0;
     char yunsfu = 0;
     char ch = 0;

to:
printf("输入计算的数:(格式如1 * 3 )\n");
scanf("%lf %c %lf", &menber1, &yunsfu, &menber2);
printf("%lf %c %lf", menber1, yunsfu, menber2);
    switch( yunsfu )
{
      case '+':
           printf("= %.2lf\n", menber1 + menber2);
           break;
      case '-':
           printf("= %.2lf\n", menber1 + menber2);
           break;
      case '*':
           printf("= %.2lf\n", menber1 * menber2);
           break;
      case '/':
    if( menber2 == 0)
         printf("除数不能为0");
   else
        printf("= %.2lf\n", menber1 / menber2);
        break;
  case '%':
        if( (long)menber2 == 0)
        printf("除数不能为0");
        else
        printf("= %d\n", (long)menber1 % (long)menber2);
       break;
}

  printf("\n 是否继续计算? (y or n): ");
  scanf(" %c", &ch);
  if( ch == 'y' || ch == 'Y')
       goto to;
  return 0;
}

为什么在第二个scanf(" %c", &ch);    %C前面要打一空格?而不打空格在输入Y是会自动退出控制台??

最佳答案

查看完整内容

键盘缓冲的问题,第一次输入后还留有 回车 在缓冲,第二次scanf获取时会先获取 回车。 解决办法: 清除一下缓冲就好。 1、flushall(); 2、fflush(stdin); 两个都可以。加在第二个scanf之前。
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-14 16:19:22 | 显示全部楼层
键盘缓冲的问题,第一次输入后还留有 回车 在缓冲,第二次scanf获取时会先获取 回车。
解决办法:
清除一下缓冲就好。
1、flushall();
2、fflush(stdin);
两个都可以。加在第二个scanf之前。

评分

参与人数 1鱼币 +1 收起 理由
lukelqz + 1 加个c语言的版本^_^ while(getchar()!='\.

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-3-14 17:38:12 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-3-16 15:15:28 | 显示全部楼层

设为最佳答案哦
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-3-17 20:01:57 | 显示全部楼层
本帖最后由 xhhyi 于 2013-3-17 20:03 编辑

因为之前scanf接收数据后会把\n返回到输入流缓冲区中,下次读取时,由于%c会读取所有字符,所以会把\n读进来,加上空格会屏蔽掉%c之前的所有空格符(空格、回车等)
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-3-23 14:45:00 | 显示全部楼层
收益非浅啊~~~~~~~~~~
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-8-5 20:50

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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