爱问知识人 爱问教育 医院库

c语言问题 为什么没有提示输入字符 改成 choice=getchar()也不行,改成choice=getch()才可以 详细一下

首页

c语言问题 为什么没有提示输入字符 改成 choice=getchar()也不行,改成choice=getch()才可以 详细一下

void main()
{
char choice;
do
{

printf("请输入复数一的实部:");
scanf("%f",&s1.a);
printf("请输入复数一的虚部:");
scanf("%f",&s1.b);
printf("请输入复数二的实部:");
scanf("%f",&s2.a);
printf("请输入复数二的虚部:");
scanf("%f",&s2.b);
printf("Are you again?(y/n)");
scanf("%c",&choice);

}while(1);
}

提交回答

全部答案

    2018-11-10 01:45:19
  • 这是由于输入流的问题,缓冲区内还存在数据,读写的时候直接就赋给了 变量choice。
    你要注意,在处理字符类型的输入时地注意缓冲区是否还留有数据,有可能是个回车(一般情况下)。所以在读入字符型语句前,比如 scanf("%c",&choice); 前加 getchar(); 语句,这样就不会有问题了,或者也可以使用 fflush(stdin); 直接清空输入流。那位说用 scanf("%s",&choice); 这种字符串处理代替字符,其实这种方法在所有数据都是字符时使用倒是挺好,这样就不用管输入流了,因为 %s 是输入到回车结束的,也不会产生类似问题!

    已***

    2018-11-10 01:45:19

类似问题

换一换

相关推荐

正在加载...
最新问答 推荐信息 热门专题 热点推荐
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200

热点检索

  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
返回
顶部
帮助 意见
反馈

确定举报此问题

举报原因(必选):