C语言,用Visual Studio2012编译,控制台窗口老是自动关闭。

为何用VS2012调试程序结尾使用getchar不起效果,用getch就可以。在就是我下面这个程序,运行后,显示两行文字,输入y,又显示两行文字(goto语句成功执行),... 为何用VS2012调试程序结尾使用getchar不起效果,用getch就可以。
在就是我下面这个程序,
运行后,显示两行文字,输入y,又显示两行文字(goto语句成功执行),但是这时我不论输入y还是n,窗口直接关闭了;
再运行,显示两行文字,输入n,等待键入(getch函数成功执行),窗口在有按键后关闭。

我想知道为何第一种运行中,执行了一次goto后,就不执行goto也不执行getch,就这么直接关闭了?

#include <stdio.h>
#include <conio.h>
int main(void)
{
char choice = 'n';
start:
printf("Hello world!\n");
printf("Do again? (y or n):\n");
scanf("%c",&choice);
if(choice == 'y')
goto start;
getch();
return 0;
}
展开
 我来答
捣蒜大师Edison
2016-12-26 · TA获得超过2963个赞
知道大有可为答主
回答量:3825
采纳率:77%
帮助的人:1299万
展开全部
运行后,显示两行文字,输入y,又显示两行文字(因为这时choice是y,所以goto语句成功执行),接下来scanf语句自动接收了上次的回车,不再执行goto,所以执行的是getch,这时我不论输入y还是n,窗口执行完getch直接关闭了;
更多追问追答
追问

那为何这个程序又能正常运行的?在最后输入y回车,第二轮再输入y回车依旧能goto start。

追答
没有正常啊
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式