㈠ 为什么我win10系统Dev c++和vs 2013 编译全是对的,但一运行就exe停止运行
能编译通过,并不代表你的程序没有任何问题。能编译通过只是说明你的程序没有编译、链接错误,但是不一定没有运行时错误。运行时崩溃大多情况下是非法访问内存造成的,典型如:数组越界、使用了空指针等。
㈡ C语言里程序编译无误但运行会弹出程序已停止运行是为什么
造成程序停止运行弹框出错的可能原因如下:
内存溢出
内存溢出(out of memory)通俗理解就是内存不够,程序所需要的内存远远超出了主机内安装的内存所承受大小,就叫内存溢出。系统会提示内存溢出,有时候会自动关闭软件,重启电脑或者软件后释放掉一部分内存又可以正常运行该软件
造成内存溢出的原因可能有:
1>栈区溢出,例如在main函数内开辟的数组空间过大,一般机器的栈区限制在8MB左右,如果开辟的数组大小超过限制,程序就会崩溃。通常的解决方法是申请堆内存,即将较大的数组作为全局变量开在main函数之外。
2>错误地址访问,常见的非法访问包括指针漂移,数组越界等,初学者也经常出现类似scanf函数没加区地址符号&的情况导致在读取变量的时候因非法访问造成的溢出。
3>数据类型不符,问题和第二个类似,例如在声明变量时声明为int在输出变量时却用了%lld,就会造成因数据类型不符而导致的溢出。
编译器错误
部分编译器由于所使用的标准不同(例如在一台机器上使用的可能是C99标准,而另一台机器上使用的是C11标准),或是因为编译器链接库的损坏,在少数情况下也可能导致程序出现不限于崩溃退出的异常错误,通常解决方法是到编译器官方网站下载最新版的IDE安装。
㈢ visual studio2008怎样中断或退出正在编译运行的程序
正在编译时,“生成”菜单里有个“取消”的菜单项,点它可以中止编译。或者按Ctrl+Break(Pause)
调试运行时,按
Shift+F5
停止运行
㈣ 这个C++程序一运行就提示改程序停止运行,编译没报错,为什么
检查下数组越界什么的。
㈤ C语言如何停止运行
一般都是用Ctr+c来停止。如果是程序内部的话,可以在main函数里面使用return,或者用exit()都可以让程序停止运行。
㈥ C++编译的程序,运行时显示exe停止运行
你的scanf函数和最后一个printf函数用错了,scanf那一行调用,%d%d要用引号括起来,引号的结尾应该在%d%d的后面,而不是在&b的后面;最后一个printf的调用也是这样,引号的结尾也应该用在%d的后面,而不是在c的后面。printf和scanf调用,带%的是一个参数,后面的变量是另外的参数,不能放在一起(后面的变量放在引号里面就表示是一个参数了),否则会有运行时错误。
㈦ 一运行C语言程序 就提示程序已经停止工作
试试重新建立工程,编译以下空代码的程序:
intmain()
{
}
如果这个空代码编译运行不出问题,说明你的程序在调用scanf或者调用指针时候有内存上的错误出现。(仔细查看代码中的scanf和指针调用时的内存使用错误,也可以把所有用到指针和scanf的地方先屏蔽,找出哪个地方内存分配不对)。
如果这个空代码运行也出问题,说明是你编译器有问题。
㈧ c语言文件读取问题,停止运行
代码能力和代码格式OK,细心点就好。
fopen里面的 "r" (明显是read啊)是只读权限,注释也是错的。
你以只读方式打开了一个文件之后又向你打开的文件里面写数据,这是自相矛盾。
下面给你个网络的fopen的权限表:
r 打开只读文件,该文件必须存在。
r+ 打开可读写的文件,该文件必须存在。
rb+ 读写打开一个二进制文件,只允许读写数据。
rt+ 读写打开一个文本文件,允许读和写。
w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。
w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。(EOF符保留)
a+ 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。(原来的EOF符不保留)
wb 只写打开或新建一个二进制文件;只允许写数据。
wb+ 读写打开或建立一个二进制文件,允许读和写。
wt+ 读写打开或着建立一个文本文件;允许读写。
at+ 读写打开一个文本文件,允许读或在文本末追加数据。
ab+ 读写打开一个二进制文件,允许读或在文件末追加数据。
上述的形态字符串都可以再加一个b字符,如rb、w+b或ab+等组合,加入b 字符用来告诉函数库打开的文件为二进制文件,而非纯文字文件。不过在POSIX系统,包含Linux都会忽略该字符。由fopen()所建立的新文件会具有S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH(0666)权限,此文件权限也会参考umask 值。
有些C编译系统可能不完全提供所有这些功能,有的C版本不用"r+","w+","a+",而用"rw","wr","ar"等,读者注意所用系统的规定。
㈨ 求高手赐教,为什么C语言程序编译时没问题,而在运行时显示文件已停止工作,要关闭该程序啊急急
int a,b;
scanf("%d%d",&a,&b);//参数必须是指针(地址)才可以。
scanf()函数要求参数必须是指针类型,即将地址传输到其内,才可以让a , b变量中获取到数据。
如果你学过指针,你就会理解了。
C语言中函数的调用中,参数传递,只能传递数值。如果只是将数值传递过去(接收者是形参),在子函数中变化,形参的变化,不会影响到实参数据的内容。
C中,每定义一个变量,系统都会在内存中给其分配一个空间用来存储数据。而这个空间的编号就是这个变量的地址。当我们将这个地址传递到子函数中,子函数在操作数据时,就会改变这个地址中的数据,这样,实参的数据是会发生变化。
而你程序中,传递的是a b本身的值(可能是0,可能是1,可能是任意的数),scanf()将这两个值当作地址去操作,因此会产生系统错误,导致程序运行停止。
㈩ 求助,为什么我这编译无错,一运行就停止工作
关于用户编写的源程序的编译问题,这是一个很复杂的问题。因为编译错误有很多种。例如:语法错误、系统库连接错误、语义错误、数组越界、或者内存越界等等。
通常语法错误是最好解决的,因为源程序的语法错了,连编译都通不过,并且会告诉你在哪一行出错了。最难调试的就是:程序虽然编译通过了,但是程序的运行结果是错误的,这种是最难调试的。根据你所描述的情况,有可能是你的数组、或者是内存在使用过程中越界,所以导致一运行程序就停止工作。你再仔细检查一下你的源程序。