程序立即以退出代码0结束 - 但如果没有输入它就不应该到达那里

时间:2013-11-17 02:38:18

标签: c

构建成功。如果我打开输出窗口,它会显示:

  

程序以退出代码结束:0

但是我的程序是这样的,如果没有先完成用户输入,做了一些事情,并采取了另一个用户输入,这一切都是不可能的,所有这些都在int main()中。

int main()做的第一件事是循环获取p的输入,直到输入是一个(两个)所需选项。因此,它无法立即退出 - 它会初始化p=0并且在while为1或2之前不会退出p循环。

是否存在一些隐藏错误,使得构建成功而没有实际成功?

int main(){
    //vars
    while (TRUE){
        //play computer or human?
        while (!(p == 1 || p == 2)) {
            printf("Single player or two player? (1/2): ");
            scanf("%d", &p);
        }

        if (p==1) {
            //play computer
        }

        else {
            //snip
        }

        printf("%s won the game! Play again?", winner);
        scanf("%s", playagain);
        if (strncmp(playagain,"no",2)==0){
            break;
        }
    }
    return 0;
}

1 个答案:

答案 0 :(得分:3)

打印出定义为大写TRUE的内容。我看到一些雄心勃勃但缺乏经验的人用它做了奇怪的事情。您可能甚至没有进入主while循环。

printf("TRUE is %d\n",TRUE);

如果这不是零,则问题出在其他地方。