当前位置:  开发笔记 > 开发工具 > 正文

为什么会出现运行时错误?

如何解决《为什么会出现运行时错误?》经验,为你挑选了1个好方法。

我正在使用GNU GCC Compiler编写代码块编辑器.我编写了以下代码(包括相关的库和头文件)

int main()
{
char a;
scanf("%c",&a);
switch(a)
{
 case '1':
 scanf("%c",&a);
   if(a=='3')
    {
    printf("3\n");
    }else
    {
    printf("4\n");
    }


 break;

 case '2':
 printf("HELLO\n");
 break;

}



return 0;
}

当我运行代码时,终端显示光标以获取1字符.我输入3并按下返回键.所以它要我输入另一个字符.这次我输入并再次按下返回键.而不是打印3在终端坏事发生了:运行时错误.为什么会这样?我犯了哪个错误?我是否忽略了一些范围规则?如果我这样做了,我忽略了哪个范围规则?



1> haccks..:

该计划没有错.你只需要跳过'\n'前一个留下的角色scanf.
按下时Enter,会有一个额外的字符'\n'进入输入缓冲区.这'\n'是当前留下的scanf.在下一次阅读时scanf将读取此剩余字符,您将获得该程序的意外行为.

要跳过此换行符,您可以先放置一个空格 %c

scanf(" %c",&a);  
  //   ^^ A space before %c can eat up any number of white spaces.  

另一种方法是在每个之后放置这一行scanf

int ch;
while((ch = getchar()) != EOF && ch != '\n');

推荐阅读
殉情放开那只小兔子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有