㈠ 為什麼我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()將這兩個值當作地址去操作,因此會產生系統錯誤,導致程序運行停止。
㈩ 求助,為什麼我這編譯無錯,一運行就停止工作
關於用戶編寫的源程序的編譯問題,這是一個很復雜的問題。因為編譯錯誤有很多種。例如:語法錯誤、系統庫連接錯誤、語義錯誤、數組越界、或者內存越界等等。
通常語法錯誤是最好解決的,因為源程序的語法錯了,連編譯都通不過,並且會告訴你在哪一行出錯了。最難調試的就是:程序雖然編譯通過了,但是程序的運行結果是錯誤的,這種是最難調試的。根據你所描述的情況,有可能是你的數組、或者是內存在使用過程中越界,所以導致一運行程序就停止工作。你再仔細檢查一下你的源程序。