ctrl+c中断程序时出现异常,搞不定了……

sai_johnny 2013-11-22 09:37:06
在做题中时发现的。
程序用了一个while(1)的循环,目的是为了测试多种用例,然后用ctrl+c结束程序。
然后调试程序时发现,在结束程序时有异常中断产生……我不明白这是怎么产生的。
程序简化如下:

#include <stdio.h>
int main(void)
{
char temp;
while(1){
temp = getchar();
}
return 0;
}


...全文
501 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
sai_johnny 2013-11-23
  • 打赏
  • 举报
回复
引用 5 楼 sai_johnny 的回复:
[quote=引用 3 楼 taodm 的回复:] 楼主啊,换本合格的教材吧。 还让你用ctrl_c结束程序的垃圾书都可以直接扔了。
呃。。怎么说? OJ题目里很多都是给出多种测试用例,但没有结束条件。 所以结束程序的话,不是就得ctrl+c么? 以前好像都是while(scanf(...) != EOF)这样来做。 然后这次需要一个字符一个字符的读入,就没想那么多,直接按照主楼的代码做的。 结果就发现这个异常了……[/quote]
引用 6 楼 zhaowech 的回复:
ctrl+c对程序来说本来就是异常,在调试的时候VS会捕获这个异常,通知用户处理,单独运行exe应该不会报异常了 此外,用户可以自定义ctrlhandler,来处理这个异常,防止报错
哦哦。主要是以前没有注意到这种异常。所以发现后就觉得很奇怪~~~
孤影品茗 2013-11-23
  • 打赏
  • 举报
回复
ctrl+c对程序来说本来就是异常,在调试的时候VS会捕获这个异常,通知用户处理,单独运行exe应该不会报异常了 此外,用户可以自定义ctrlhandler,来处理这个异常,防止报错
sai_johnny 2013-11-23
  • 打赏
  • 举报
回复
引用 3 楼 taodm 的回复:
楼主啊,换本合格的教材吧。 还让你用ctrl_c结束程序的垃圾书都可以直接扔了。
呃。。怎么说? OJ题目里很多都是给出多种测试用例,但没有结束条件。 所以结束程序的话,不是就得ctrl+c么? 以前好像都是while(scanf(...) != EOF)这样来做。 然后这次需要一个字符一个字符的读入,就没想那么多,直接按照主楼的代码做的。 结果就发现这个异常了……
sai_johnny 2013-11-23
  • 打赏
  • 举报
回复
引用 1 楼 jiangsheng 的回复:
这是默认的行为 可以用SetConsoleCtrlHandler自定义
哦哦。但是有时可以直接可以把程序结束掉,没有提示中断异常。 而且在刷OJ题时,有一题总是Runtime error,就是结束程序这里出问题了。 题目没给出结束条件,那不就只能ctrl+c来结束程序么?
taodm 2013-11-23
  • 打赏
  • 举报
回复
楼主啊,换本合格的教材吧。 还让你用ctrl_c结束程序的垃圾书都可以直接扔了。
Adol1111 2013-11-23
  • 打赏
  • 举报
回复
这个在默认情况下都会抛出异常的,ctrl+C就是为了中断存在的,可以用楼上方法自定义下。
蒋晟 2013-11-23
  • 打赏
  • 举报
回复
这是默认的行为 可以用SetConsoleCtrlHandler自定义

70,024

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧