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

特工47

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

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;
}

当我运行的代码,终端显示的光标以获得character.I类型1和压回key.So它想让我进入另一个character.This时间我输入3并按下回车键again.Instead打印的3在终端发生了一些不好的事情:运行时错误。为什么会发生这种情况?我犯了哪个严重错误?我是否忽略了某些合并范围规则?如果我这样做了,我忽略了哪个合并范围规则?

吊床

该程序没有错。您只需要跳过上一个'\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');

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么会出现访问冲突运行时错误?

为什么这段代码在中间计算时会出现运行时错误?

为什么在StackBlitz上运行时,我的Angular应用程序会出现错误?

为什么会出现运行时错误:向量擦除迭代器超出范围

比较两列时为什么会出现运行时错误?

释放内存时为什么会出现运行时错误?

为什么在为 char 指针赋值时会出现运行时错误?

为什么即使在声明向量的大小之后也会出现运行时错误?

为什么会出现运行时错误58-在VBA中复制文件时文件已经存在?

为什么每当我将API密钥放入build.gradle时都会出现运行时错误?

为什么该程序在运行时出现错误

为什么io.WriterString出现运行时错误?

为什么我的代码出现运行时错误?

为什么在程序运行时会出现偶尔出现的NPE?

在运行时垂直调整Frame大小后,为什么JRadioButtons会出现故障?

为什么我的通用 StatefulWidget 类在运行时会出现 TypeError?

为什么从MEL访问ArrayList的大小时会出现运行时异常?

从 MS Word 文档中读取单选按钮值时,为什么会出现“运行时错误‘91’:对象变量或块变量未设置”?

为什么在新计算机上访问Firestore时会出现“紧急:运行时错误:无效的内存地址或nil指针取消引用”?

Word- VBA-为什么会出现运行时错误451“属性让过程未定义且属性获取过程未返回对象”?

为什么在运行简单的docker映像时出现oci运行时错误?

为什么会出现这种使用泛型不会抛出运行时或编译时的异常?

为什么会出现运行时检查失败#2-变量'x'周围的堆栈已损坏?

为什么我在 Windows 中使用 python 进行多处理时出现运行时错误?

为什么此记录结构正在编译但出现运行时错误

为什么在struct中使用字符串时出现运行时错误

为什么在Codechef中提交此代码时出现运行时错误(SIGABRT)?

在JVM下运行时,为什么我的Ada共享库上出现“存储错误”

为什么在运行时出现Typescript编译错误?