C语言中避免程序一闪而过的代码intmain(void){…system("pause");见下

C语言中避免程序一闪而过的代码intmain(void){…system("pause");见下,第1张

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

1 通过getch函数驻留。

getch会等待从屏幕的输入,在main函数退出前,增加

getch();

调用,系统会等待输入,直到有新的输入,才会退出界面。

2 通过system("pause");来实现驻留。

在main退出前调用

system("pause");

会调用系统的pause函数,提示并实现按任意键退出程序效果。

如果是已经编译好的C语言程序,可以通过开始->运行,键入cmd后回车。

在打开的命令行窗口,将可执行文件拖动到窗口上,再回车即可运行该程序,在此窗口不会出现闪退,从而观察运行结果。

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

造成程序停止运行d框出错的可能原因如下:

内存溢出

内存溢出(out of memory)通俗理解就是内存不够,程序所需要的内存远远超出了主机内安装的内存所承受大小,就叫内存溢出。系统会提示内存溢出,有时候会自动关闭软件,重启电脑或者软件后释放掉一部分内存又可以正常运行该软件

造成内存溢出的原因可能有:

1>栈区溢出,例如在main函数内开辟的数组空间过大,一般机器的栈区限制在8MB左右,如果开辟的数组大小超过限制,程序就会崩溃。通常的解决方法是申请堆内存,即将较大的数组作为全局变量开在main函数之外。

2>错误地址访问,常见的非法访问包括指针漂移,数组越界等,初学者也经常出现类似scanf函数没加区地址符号&的情况导致在读取变量的时候因非法访问造成的溢出。

3>数据类型不符,问题和第二个类似,例如在声明变量时声明为int在输出变量时却用了%lld,就会造成因数据类型不符而导致的溢出。

编译器错误

部分编译器由于所使用的标准不同(例如在一台机器上使用的可能是C99标准,而另一台机器上使用的是C11标准),或是因为编译器链接库的损坏,在少数情况下也可能导致程序出现不限于崩溃退出的异常错误,通常解决方法是到编译器官方网站下载最新版的IDE安装。

在 %d 的中间,加上数字,如果你要讲所有的数字显示在25的位置,

那么就用25 减去 你前面的字符个数,

比如:char 4个字符,那就是25-4 =21,写成 %21d

比如:int 3个字符,那就是25-3 =22,写成 %22d

下面只写了三行,你试试吧

#include <stdioh>

#include <stringh>

int main()

{

    printf("char%21d\n",11);

    printf("int%22d\n",11);

    printf("short int%16d\n",11);

}

楼上的看清楚没有啊。。。

个人见解:主函数输入了两个字符串,并传入fun()函数中;是用来计算b字符串在a中出现的次数。。

lz可以自己测试下,我的测试:

1a:weareone

b:we

m = 1;

2 a:weareone

b:w

m = 1;

3 a:weareone

b:e

m = 3;

4 a = weareoneweareone

b = weareone

m = 2;

5 a = weareoneweareonewe

b = weareone

m = 2

改成这样:

int main()

{

int flag=0;

double faHeight, moHeight,YouHeight;

char sport, sex, diet;

printf("Welcome to height test\n");

printf("please input your sex,M or F\n");

scanf("%c", &sex);

getchar();

printf("please input your father and mother's height\n");

scanf("%lf,%lf", &faHeight, &moHeight);

getchar();

printf("Do you like sport Y or N\n");

scanf("%c", &sport);

getchar();

printf("Do you have a good diet Y or N\n");

scanf("%c", &diet);

getchar();

if (sex == 'F')

{

flag = flag + 1;

}

if (sport == 'Y');

{

flag = flag + 10;

}

if (diet == 'Y');

{

flag = flag + 100;

}

switch (flag)

{

case 1:

YouHeight = (faHeight + moHeight)054;

break;

case 11:

YouHeight = (faHeight + moHeight)054 102;

break;

case 111:

YouHeight = (faHeight + moHeight)0541035;

break;

case 101:

YouHeight = (faHeight + moHeight)0541015;

break;

case 0:

YouHeight = (faHeight09232 + moHeight) / 2;

break;

case 10:

YouHeight = (faHeight0923 + moHeight) / 2 102;

break;

case 110:

YouHeight = (faHeight0923 + moHeight) / 2 1035;

break;

case 100:

YouHeight = (faHeight0923 + moHeight) / 2 1015;

break;

default:

printf("you input the wrong word\n");

break;

}

printf("You heingt is %f\n", YouHeight);

getchar();

return 0;

}

这是由于你不知道具体的方法。首先要确定你编写的是win32控制台应用程序。

然后,有三个方法来执行:

方法一:

点左下角带windows旗帜的图标,输入cmd,出现DOS窗口,然后将你编写的C语言程序编译成的可执行文件拖曳到窗口中,执行即可。

方法二:

在你的程序中添加头文件#include <stdlibh>

在你的主程序中添加代码:system("pause");

方法三:

在你的程序中添加头文件#include <conioh>

在你的主程序中添加getch();

#include<stdioh>

int main(){

double r,d,c,s;

char ch;

scanf("%f",&r);

d=20r;

c=31415926d;

s=31415926rr;

printf("%32f %32f %32\n",d,c,s);

scanf("%c",&ch);//是想输入任意字符结束吧,记得有个getch()还是什么忘记了,自己找找

return 0;

}

单片机内存有限,据我所知,内存中分3部分,一部分放程序指令,一部分作为堆用,一部分作为栈,这里用递归了,每次调用函数会把当前状态压栈,没有结束,那样存储空间不够,栈溢出,单片机系统不会复位,但是程序会乱跑。个人理解而已。

以上就是关于C语言中避免程序一闪而过的代码intmain(void){…system("pause");见下全部的内容,包括:C语言中避免程序一闪而过的代码intmain(void){…system("pause");见下、C语言里程序编译无误但运行会d出程序已停止运行是为什么、为什么用C语言编写的程序格式会错位等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9709206.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存