程序跳过scanf并没有提示输入

程序跳过scanf并没有提示输入,第1张

你这个的问题 不在于是否要fflush

其实加上也是错的。

重点在于

你的scanf中,格式字符串用的是"%d,%d" 也就是逗号分隔的形式

所以你输入的时候 需要11,22这样才可以。不然num实际上是没有输入成功的。

或者 你用"%d%d"格式,然后输入11 22

这样也可以。

有二个地方必须要改一下:

第一,read改为myread(共有3处)

第二,switch(a)要改为switch(p)

#include <stdio.h>

void myread(int)

int main()

{

  char i

printf("please input a number:")

  scanf("%d",&i)

myread(i)

printf("\n")

  return 0

}

void myread(int p)

{

   switch(p){

    case 0: printf("ling ")break

    case 1: printf("yi ")break

    case 2: printf("er ")break

    case 3: printf("san ")break

    case 4: printf("si ")break

    case 5: printf("wu ")break

    case 6: printf("liu ")break

    case 7: printf("qi ")break

    case 8: printf("ba ")break

    case 9: printf("jiu ")break

    }

}

当你输入非整数时,scanf函数不能成功的将该非整数放入x,返回值ret为0,此时非整数还在原来的stdin流中,等到下次scanf时,scanf函数会扫描stdin流,发现流中有数据,就不会等待输入,而是直接将流中数据尝试放入x,这是还是一样错误,ret=0,如此死循环,就一直输出 “请输入一个整数:“


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11807724.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存