c语言程序执行一闪而过怎么办 为什么自己编译的c语言程序会一闪而过?

\u4e3a\u4ec0\u4e48\u8fd0\u884cC\u8bed\u8a00\u7684\u7a0b\u5e8f\u4f1a\u4e00\u95ea\u800c\u8fc7\uff0c\u770b\u4e0d\u5230\u7ed3\u679c

\u8fd9\u662f\u7531\u4e8e\u4f60\u4e0d\u77e5\u9053\u5177\u4f53\u7684\u65b9\u6cd5\u3002\u9996\u5148\u8981\u786e\u5b9a\u4f60\u7f16\u5199\u7684\u662fwin32\u63a7\u5236\u53f0\u5e94\u7528\u7a0b\u5e8f\u3002
\u7136\u540e\uff0c\u6709\u4e09\u4e2a\u65b9\u6cd5\u6765\u6267\u884c\uff1a
\u65b9\u6cd5\u4e00\uff1a
\u70b9\u5de6\u4e0b\u89d2\u5e26windows\u65d7\u5e1c\u7684\u56fe\u6807\uff0c\u8f93\u5165cmd\uff0c\u51fa\u73b0DOS\u7a97\u53e3\uff0c\u7136\u540e\u5c06\u4f60\u7f16\u5199\u7684C\u8bed\u8a00\u7a0b\u5e8f\u7f16\u8bd1\u6210\u7684\u53ef\u6267\u884c\u6587\u4ef6\u62d6\u66f3\u5230\u7a97\u53e3\u4e2d\uff0c\u6267\u884c\u5373\u53ef\u3002
\u65b9\u6cd5\u4e8c\uff1a
\u5728\u4f60\u7684\u7a0b\u5e8f\u4e2d\u6dfb\u52a0\u5934\u6587\u4ef6#include
\u5728\u4f60\u7684\u4e3b\u7a0b\u5e8f\u4e2d\u6dfb\u52a0\u4ee3\u7801\uff1asystem("pause");
\u65b9\u6cd5\u4e09\uff1a
\u5728\u4f60\u7684\u7a0b\u5e8f\u4e2d\u6dfb\u52a0\u5934\u6587\u4ef6#include
\u5728\u4f60\u7684\u4e3b\u7a0b\u5e8f\u4e2d\u6dfb\u52a0getch();

\u8fd9\u662f\u56e0\u4e3a\u7535\u8111\u8fd0\u884c\u5f97\u5f88\u5feb\uff0c
\u800c\u4f60\u7f16\u5199\u7684\u7a0b\u5e8f\u91cc\u9762\u80af\u5b9a\u6ca1\u6709\u8ba9\u7535\u8111\u53ef\u4ee5\u505c\u6b47\u7684\u8bed\u53e5\uff0c\u7535\u8111\u6267\u884c\u5b8c\u7a0b\u5e8f\u540e\u5c31\u81ea\u52a8\u5173\u95ed\uff0c\u53ea\u6709\u60f3\u529e\u6cd5\u8ba9\u5b83\u505c\u4e0b\u7b49\u54b1\u4eec\u624d\u80fd\u770b\u6e05\u695a
\u6240\u4ee5\u5efa\u8bae\u5728\u7a0b\u5e8f\u7684\u6700\u540e\u52a0\u4e00\u53e5getchar();\u8fd9\u65f6\uff0c\u4f60\u8981\u52a0\u5165\u5934\u6587\u4ef6#include\u3002
\u56e0\u4e3a\u8fd9\u4e2a\u5934\u6587\u4ef6\u662f\u952e\u76d8\u548c\u5c4f\u5e55\u8f93\u5165\u8f93\u51fa\u7684\u63a7\u5236\u5934\u6587\u4ef6\u3002\u5f53\u7136\u4e5f\u6709\u522b\u7684\u65b9\u6cd5\uff0c\u5c31\u7b49\u4f60\u4e86\u89e3\u5176\u539f\u7406\u65f6\u5c31\u77e5\u9053\u8be5\u600e\u6837\u4e86

原因:在编译执行的时候,如果是直接按F5是调试,就会出现一闪而过的情况,安ctrl+F5的执行不调试,这样的话就不会出现一闪就没的情况了。

方法一:getchar(),即在主函数尾部或程序最后加上getchar();也就是接受键盘输入,这样程序就不会一闪而过,因为程序还没有执行完。

注:当代码中存在scanf()函数时,需要在getchar();前加上fflush(stdin);清除键盘缓存,以防影响getchar()的接收。

方法二:system("pause"),system("pause");加在主函数的尾部,配合windows.h头文件使用才行。即
#include <stdio.h>
#include <windows>
void main(){
……
system("pause"):
……
}



可以在程序结尾使用system("pause");语句阻止窗口消失。

system("pause");的头文件为#include<stdlib.h>

#include<stdio.h>

#include<stdlib.h>

void to_upper_str( char *str ) //子函数

{

while( *str )

{

if( *str >='a' && *str<='z' )

*str -= 32;

str++;

}

}

int main(){

char str[11] ;

printf("请输入10个英文字符:
");

scanf("%s",str);

str[10]='\0' ;

to_upper_str( str );

printf("结果为:%s
",str);

system("pause");

return 0;

}

拓展资料

C语言是一门通用计算机编程语言,广泛应用于底层开发。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。

二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言制定了一套完整的美国国家标准语法,称为ANSI C,作为C语言最初的标准。 [1]  目前2011年12月8日,国际标准化组织(ISO)和国际电工委员会(IEC)发布的C11标准是C语言的第三个官方标准,也是C语言的最新标准,该标准更好的支持了汉字函数名和汉字标识符,一定程度上实现了汉字编程。

C语言是一门面向过程的计算机编程语言,与C++,Java等面向对象的编程语言有所不同。

其编译器主要有Clang、GCC、WIN-TC、SUBLIME、MSVC、Turbo C等。

stdlib头文件即标准库标准库头文件 .stdlib.h里面定义了五种类型,一些宏和通用工具函数。类型例如size_t,wchar_t,div_t,ldiv_t和lldiv_t;宏例如EXIT_FAILURE,EXIT_SUCCESS,RAND_MAX和MB_CUR_MAX等等;常用的函数如malloc(),calloc(),realloc(),free(),system(),atoi(),atol(),rand(),srand(),exit()等等。具体的内容打开可以compile-器的包括目录里面的文件stdlib.h头文件查看。



一闪而过是程序自动结束,同时编译器没有提供结果驻留功能。对于此种情况,可以手动在代码结尾增加驻留功能的函数。常用的有如下两种:

1 通过getch函数驻留。
getch会等待从屏幕的输入,在main函数退出前,增加
getch();
调用,系统会等待输入,直到有新的输入,才会退出界面。

2 通过system("pause");来实现驻留。
在main退出前调用
system("pause");
会调用系统的pause函数,提示并实现按任意键退出程序效果。

如果是已经编译好的C语言程序,可以通过开始->运行,键入cmd后回车。
在打开的命令行窗口,将可执行文件拖动到窗口上,再回车即可运行该程序,在此窗口不会出现闪退,从而观察运行结果。

由于该问题仅在windows平台出现,所以以上介绍均针对windows平台。

解决问题方法:

方法一:getchar()

即在主函数尾部或程序最后加上getchar();

也就是接受键盘输入,这样程序就不会一闪而过,因为程序还没有执行完!

注:当代码中存在scanf()函数时,需要在getchar();前加上fflush(stdin);清除键盘缓存,以防影响getchar()的接收!

方法二:getch()

getch();的使用很简单,也是加载主函数的尾部,但其需要配合conin.h头文件使用才行!

#include <stdon.h>

#include <conin.h>

void main{

……

getch();

……

}

方法三:system("pause")

system("pause");加在主函数的尾部,配合windows.h头文件使用才行

#include <stdio.h>

#include <windows>

void main(){

……

system("pause"):

……

}



加两句getchar();才可以。因为你在上面用了scanf,输入完成后会在缓冲区残留一个'\n'字符(scanf不接受'\n'的),第一个getchar会接受缓冲区内的这个残留的'\n'字符作为输入,而不是等待你的键盘输入,所以才会显得加getchar()没效果,其实是需要连续写两个getchar();才可以

  • C璇█缂栫▼闂 涓轰粈涔堟垜缂栫殑绋嬪簭缁撴灉灏遍棯涓涓
    绛旓細1銆佸洜涓绋嬪簭宸茬粡鎵ц瀹屼簡锛岃杩涚▼缁撴潫浜嗐備箣鍓嶇敤鍒扮殑缂栫▼杞欢涔嬫墍浠ヨ兘鐪嬪埌缁撴灉锛屾槸鍥犱负杞欢璁剧疆浜嗙被浼兼殏鍋滅殑鍔熻兘锛氬湪绋嬪簭閫鍑哄墠鏆傚仠浣忥紝灏辩湅鍒扮粨鏋滀簡銆傚彲浠ュ湪绋嬪簭鏈熬鍔犱笂鏆傚仠鍑芥暟銆2銆佷緥绋嬶細include <stdio.h> include <stdlib.h> int main(){ printf("hello world");system("pause");return 0;} ...
  • C璇█杩愯绋嬪簭绐楀彛涓闂岃繃鐨勯棶棰
    绛旓細鐩存帴浣跨敤sleep() ;鍑芥暟銆 锛堬級涓紶鍏ユ绉掓暟 1000涓轰竴绉 锛 浣跨敤getch()涔熷彲浠ヨ绋嬪簭鏆傚仠锛
  • 鍏充簬C璇█涓闂岃繃
    绛旓細visual c++閲岄潰杩愯涓闂岃繃锛岃鏄庝綘鐨绋嬪簭鍐欑殑鏈夐棶棰橈紝鎴栬呮槸浣犺緭鍏ヤ笉瀵癸紝鎴栬呮槸涔︿笂鍗板埛閿欒銆備竴鑸槸锛1 scanf()鍑芥暟杈撳叆鏍煎紡灏戝姞"&"绗﹀彿 2 瀹氫箟鏁扮粍澶у皬鍚庯紝浣跨敤鏃惰秺鐣屻傛瘮濡傚畾涔塱nt a[5],浣跨敤浜嗕笉瀛樺湪鐨刟[5].3 鍔ㄦ佸垎閰嶅唴瀛樿鍙ラ敊璇紝鍒嗛厤澶辫触鐩存帴exit(0),涓闂岃繃銆4 杈撳叆鏍煎紡閿欒锛屾瘮濡...
  • 鎬庝箞涓嶈C璇█鍐欑殑鎺у埗鍙绋嬪簭涓闂岃繃
    绛旓細甯哥敤涓ょ鏂规硶锛氫竴銆佸欢鏃 Sleep(unsigned time);//浠ョ涓哄崟浣嶇殑寤舵椂鎴栬 _sleep(unsigned time);//浠ユ绉掍负鍗曚綅浜屻侀澶栬鍙 鍦绋嬪簭鏈熬鍔犱笂锛堝湪return 涔嬪墠锛塻canf("%d",&n);//涓涓瓑寰呮案涓嶈緭鍏ョ殑鍊肩殑鍑芥暟鎴栬 getchar();//鑾峰彇鍗曚釜瀛楃getch();//鑾峰彇鍗曚釜鎸夐敭 ...
  • C璇█绋嬪簭鍝敊浜
    绛旓細鍥犱负C绋嬪簭鍦ㄧ粡杩囩紪璇戝悗鐢熸垚鐨鎵ц鏂囦欢闈炲父灏(鑷冲皯鐜板湪浣犺繕鍐欎笉鍑哄ぇ鍨嬭蒋浠跺惂!~),浠PU鐨勯熷害鎵ц杩欑绋嬪簭鏄0.00...鍑犵鐨勪簨,鎵ц瀹屼簡閭d箞杩欎釜绋嬪簭灏辩粨鏉熶簡,鍥犳浼涓闂岃繃,瑙e喅鏂规硶:1 姣旇緝绗ㄧ殑鍔炴硶:鍦ㄧ▼搴忕殑鏈鍚庡姞涓婁竴涓緭鍏ヨ鍙, 閭d箞绋嬪簭鍦ㄨ绠楀嚭缁撴灉鍚庝細鍋滃湪閭g瓑浣犺緭鏁版嵁, 杩欐牱浣犲氨鍙互鐪嬪埌...
  • (鍒氬紑濮嬩笂c璇█)杩愯C++绋嬪簭鏃剁獥鍙涓闂岃繃,鐪嬩笉瑙佺粨鏋
    绛旓細F5鏄疍ebugging妯″紡锛屽湪杩欎釜妯″紡涓嬶紝褰绋嬪簭杩愯缁撴潫鍚庯紝绐楀彛涓嶄細缁х画淇濇寔鎵撳紑鐘舵併鑰孋trl+F5鏄 Start Without Debugging妯″紡锛屽湪杩欎釜妯″紡涓嬶紝灏卞彲浠ョ湅鍒拌繍琛岀粨鏋滀簡銆傚鏋滀綘鎸塁trl+F5浠嶇劧鏄涓闂岃繃鐨勮瘽锛岄偅涔堣鎸夌収濡備笅璁剧疆锛氬湪宸ョ▼涓婂彸閿>灞炴р>閰嶇疆灞炴р>杩炴帴鍣ㄢ>绯荤粺鈥>瀛愮郴缁燂紙鍦ㄧ獥鍙e彸杈癸級鈥>...
  • 涓轰粈涔堣嚜宸辩紪璇戠殑c璇█绋嬪簭浼涓闂岃繃?
    绛旓細杩欐槸鍥犱负鐢佃剳杩愯寰楀緢蹇紝鑰屼綘缂栧啓鐨绋嬪簭閲岄潰鑲畾娌℃湁璁╃數鑴戝彲浠ュ仠姝囩殑璇彞锛岀數鑴鎵ц瀹岀▼搴忓悗灏辫嚜鍔ㄥ叧闂紝鍙湁鎯冲姙娉曡瀹冨仠涓嬬瓑鍜变滑鎵嶈兘鐪嬫竻妤 鎵浠ュ缓璁湪绋嬪簭鐨勬渶鍚庡姞涓鍙etchar();杩欐椂锛屼綘瑕佸姞鍏ュご鏂囦欢#include<conio.h>銆傚洜涓鸿繖涓ご鏂囦欢鏄敭鐩樺拰灞忓箷杈撳叆杈撳嚭鐨勬帶鍒跺ご鏂囦欢銆傚綋鐒朵篃鏈夊埆鐨勬柟娉曪紝灏辩瓑浣...
  • c璇█缁撴灉闂繃
    绛旓細鐢╒C鐨勫惂锛孎5鏄皟璇曪紝闇涓嬫柇鐐规憗F5鏃舵墠浼氬仠鍦ㄦ柇鐐瑰锛堝浜庢帶鍒跺彴绋嬪簭鏄繖鏍凤級鍦ㄩ渶瑕佷笅鏂偣澶勬憗F9鍗冲彲 濡傛灉鏄杩愯绋嬪簭锛屽揩鎹烽敭鏄疌trl+F5 鍦ㄥ閮鎵ц涔熶細鈥涓闂岃繃鈥濓紝鍦ㄦ渶鍚庡姞涓妔ystem("pause");璇彞灏卞彲浠ヤ簡
  • C璇█绋嬪簭涓轰粈涔涓闂岃繃,鍐掓场绠楁硶瑙g瓟
    绛旓細棣栧厛浣犻偅涓唴灞傜殑j寰幆鏈夐棶棰 搴旇鏄粠i+1寰幆鍒發en-1锛岃屼笉鏄弽杩囨潵銆備笉杩囦笉搴旇瀵艰嚧涓闂岃繃銆備綘璇曡瘯鐪嬫妸鏈鍚庨偅涓猻ystem鏀规垚scanf("%d", &i);鐪嬬湅鑳戒笉鑳借绋嬪簭鍋滀笅鏉ャ
  • 鍦╒C++涓负浠涔C绋嬪簭杩愯鍚庣瓟妗涓闂岃繃鏉ヤ笉鍙婄湅娓
    绛旓細鍏堣В閲婁竴涓嬩负浠涔涓闂岃繃:褰撲綘鍦╲c++閲杩愯绋嬪簭锛寁c++灏嗕細璋冪敤琛屽懡浠ゆā寮忥紙鍗砪ommand.com绋嬪簭)锛屾墦寮浣犵殑绋嬪簭銆傚綋绋嬪簭鎵ц瀹屾瘯鍚庡皢鑷姩閫鍑鸿鍛戒护妯″紡銆傛墍浠ヤ綘鏉ヤ笉鍙婄湅浣犵殑绋嬪簭鐨勮緭鍑恒傝瑙e喅杩欎釜闂锛屾渶绠鍗曠殑鏂规灏辨槸鍦ㄤ綘鐨勪唬鐮佺殑鏈鍚庯紝return 0;涔嬪墠锛屽姞涓 getchar();//getch()浼间箮涓嶆槸ANSI ...
  • 扩展阅读:c语言没错但是运行不了 ... c语言黑窗口瞬间消失 ... c语言调试一闪就没了 ... c语言按回车黑框消失 ... c语言怎么让窗口停留 ... 为什么c语言无法执行 ... c语言最后怎么执行 ... 程序运行结果一闪而过 ... 为啥c语言没错却执行不了 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网