添加了goto语句;现在我收到EXC_BAD_ACCESS错误

时间:2013-11-17 15:45:05

标签: c runtime-error goto

我听说这些也很危险。我用一个简单地让“有效输入”检查变得容易。这是代码

char info_check = 'q';
while (info_check != 'y') { 
    Quadratic* eqn=newquadratic();
    printf("\nThe coefficients entered for '%s' are a=%g, b=%g and c=%g.\n", eqn->name_or_descrpt, eqn->a, eqn->b, eqn->c);
    printf("\nIs this information correct? (y/n): ");
  get_valid_option:
    scanf("%c", info_check);
    if (info_check != 'n' || info_check != 'y') {
        printf("\n\nInvalid choice! Please input either y or n: ");
        goto get_valid_option;
    }
}

在我认为是无害的添加goto语句之前,代码运行良好。奇怪的是,错误发生在goto标记之前,并且它不会打印第二个printf。发生了什么事?

1 个答案:

答案 0 :(得分:2)

& info_check之前您错过了scanf运营商。

 scanf(" %c", &info_check);

并在%c说明符之前放置一个空格,以吃掉之前\n遗留下来的换行符(scanf)。