【问题标题】:Program closes for no apparent reason after typing one character输入一个字符后程序无故关闭
【发布时间】:2020-12-05 14:59:33
【问题描述】:

在输入 1 后,程序执行这个命令 printf("Janela ou porta?(j/p)");然后无缘无故关闭

#include <stdio.h>
#include<time.h>
#include<stdlib.h>

int main(){

    int resposta;
    char resp;
    ola:

    printf("Janela ou porta?(j/p)");

    scanf("%c",&resp);

    if (resp=='p'){

        printf("Go back(Type 1)");

        do{

            scanf("%d",&resposta);

        }while(resposta!=1);
        goto ola;

    }
}

【问题讨论】:

  • 另外,我建议您避免使用“goto”,除非有非常具体的优化要求。
  • 如果您在输入字符后 后才看到提示,请在printf() 语句后添加fflush(stdout)
  • 另外,您需要将scanf("%c",&amp;resp); 更改为scanf(" %c",&amp;resp);,注意添加的空格。请参阅scanf() leaves the newline char in the buffer。一些解释:scanf 的大多数格式说明符会自动过滤前导空格,但 %c%[]%n 不会。在% 前面添加一个空格会指示scanf 在此处也过滤前导空格。

标签: c loops goto


【解决方案1】:

当你输入 "1", "1" != "p" 这样你就永远不会到达你的 while 语句,你也不会触发 goto 语句。就像另一个答案所说的那样,您的程序刚刚结束。

【讨论】:

  • 问题是为什么在输入后才看到提示。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-12
  • 1970-01-01
  • 1970-01-01
  • 2016-06-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多