为什么这一段C程序一运行就崩溃,显示没有错误,但一运行就是EXE停止工作。

如题所述

第1个回答  2018-01-16
你用的时DEVC++吧,我以前也遇到过。你把它换为数组类型的,
char p[30]="love";
char q[30]="china";
这样运行就可以。
我也不知道为什么,我曾经问过,好像是编译器不支持。
第2个回答  2018-01-16

默认的"love"和"china"是const变量,位于不可写的区域,strcat就非法访问不行

可以改为char p[20] = "love"; 这样p可写并且空间也足够不至于strcat就越界了


追问

用指针是不是就是默认const变量?在这里,越界什么意思?谢谢您了。

本回答被提问者和网友采纳

C语言程序运行后 出现exe停止工作 为什么呢?
C语言程序运行出现exe停止工作的原因是因为内存溢出和编译器错误。第一种:内存溢出 内存溢出(out of memory)通俗理解就是内存不够,程序所需要的内存远远超出了主机内安装的内存所承受大小,就叫内存溢出。系统会提示内存溢出,有时候会自动关闭软件,重启电脑或者软件后释放掉一部分内存又可以正常运行该软...

...之后显示没有问题,但是一运行就显示exe停止运行,请大神帮忙解答...
你的指针n没有指向任何有效的地址空间,是野指针,直接赋值*n=0会导致程序出错。

为什么C语言程序运行时出现exe停止工作,但可以输出结果,用的是vc6...
你定义 数组 long int r[39];表示该数组元素个数为39个,数组下标是从0开始算起的,也就是说r[0] 为第一个元素,地39个元素应该是r[38], 所以你检查一下自己的程序,看看是不是两个循环里面都会出现,r[39]的情况?r[39]表示第40个元素,数组越界,程序就崩溃了,所以才出现exe停止运行...

C语言编译没问题,运行时出现了exe停止工作
首先,数组是个常量,数组定义的时候元素个数就应该是确定的。这个是c语言的严格规定。你定义数组的元素个数为n是没有道理的,虽然有的编译器可能通过,但是这是不严格的。

这个c语言代码哪里出问题了?一运行就崩溃
正确的用法是,编译成.exe文件后,在DOS窗口中进入这个.exe文件所在目录,然后输入“这个.exe文件名 输入文件名字 输出文件名 回车”才行。比如我编译好的文件名是1.exe,输入文件名是input.txt,准备输出的文件叫out.txt,那么就不会崩溃了,如图 要避免没有输入参数崩溃的情况,可以在程序中进行文件...

C语言编译没问题,运行时出现了exe停止工作
检查代码,特别是内存的操作相关的 ~~~

C语言程序运行后 出现exe停止工作 为什么呢?
这种情况叫做 runtime error (运行时错误)。在 Windows 7 上这样提示:在 Windows XP 上这样提示:runtime error (运行时错误)就是程序运行到一半,程序就崩溃了。比如说:①除以零 ②数组越界:int a[3]; a[10000000]=10;③指针越界:int * p; p=(int *)malloc(5 * sizeof(int));...

我的c语言语法没错 为什么 执行时停止工作
停止工作 说明运行中 语句有错误的 。比如溢出或者野指针等。你这里的问题就是 char *cname[10];这种定义的是一个指针数组 cname是10个char *指针。这些指针 并没有分配内存 也就是野指针 直接赋值 导致越界异常。

...运行出现程序已停止工作,请高手帮忙为什么运行界面显示此程序已停...
可能有几种情况:1.程序没有等待输入输出,很快的运行完毕并退出了 2.程序没有等待输入,很快计算完毕输出并退出了 3.程序一运行就出错退出了 你没说详细情况也没有代码,不明白你说的是哪种情况,你到命令行下,进到程序所在目录,手动输入程序名并回车,看看命令上有无提示信息吧 ...

...明明显示的是0 error 0warning、 但是一运行就是遇到问题需要关闭...
ch=putchar();应该是 ch = getchar();getchar()才是让用户输入字符,put是向屏幕输出。 for中的也需要修改。

相似回答