为啥加了getchar后运行后还是闪退

就是不太理解为什么我已经加了getchar后,运行那个程序输入好半径,按下回车就闪退了。

img

img

最简单的解决方法:换成 system("pause")。
为什么getchar()不行?我觉得可能最后输入的回车被捕获到了(我没有测试)。你可以将getchar()的返回值打印出来就看看是不是这样。

你在scanf_s语句后面再加个getchar();

scanf_s()函数,标准用法是scanf_s(“%f”,&a,sizeof(a)) 这个函数需要三个参数,而你只有两个参数。要不你就用三个参数,要不你就用scanf()。scanf_s()跟scanf()的区别是,scanf_s()同时可以定义输入值的存储空间大小。scanf()则没有对输入值的空间大小进行定义,一般在取址使用前定义,不然的话会发生溢出。


可以看下c语言参考手册中的 c语言-getchar()