c语言程序为什么运行一半就自动关闭了,C语言为什么程序运行一半就出现停止工作...
匿名用戶
1級
2016-04-04 回答
有點兒意思。原因卻出乎意料的簡單。 char *rwtab[27]={"main","if","then","while","do"," static","int"," double","struct","break","else","long","switch","case","typedef","char","return","const","float","short","continue","for","void","sizeof","default","do"}; 少了一項,只有26項,rwtab[26]是空指針,訪問到它時,就出錯了。錯誤提示如下: 我沒有修改這一句的時候,在你指出出錯的地方加了下面一句: for(n=0;n<27;n++) if(strcmp(token,rwtab[n])==0)//比較是否關鍵字 { printf("Cathch a key-word\n"); // } 出錯了,提示信息如下: 這意味著,訪問了一個空指針。 修改如下: char *rwtab[27]={"main","if","then","while","do","static","int",\"double","struct","break","else","long","switch","case",\"typedef","char","return","const","float","short","continue",\"for","void","sizeof","default","do","long"};//數組少一項,沒有27項,另外幾個關鍵詞前面有空格,也應該刪除。 加了續行符號。修改之后,運行成功: 我用你的程序做a.txt,生成文件b.txt,c.txt,今天不知什么情況,不能上傳。 為什么這樣?很玄妙: rwtab數組少一項,rwtab[26]會引用一個空指針,產生錯誤。這兒沒有語句時,循環沒有實質性語句,編譯程序優化, 不會編譯這個循環的語句,程序中根本沒有這幾句的內容,因而不會出錯。有了語句,就不能省略了,就出錯了。 就是這樣簡單。 另外,你的程序必須當做C++程序編譯,否則通不過。C不允許在有實質語句之后定義變量,變量說明要全部放到相應段的最前面,也不支持//注釋。我是用DEVC++編譯成功的,用WINTC編譯失敗。
追問:
有點兒意思,你這回答根本和我的問題根本就牛頭不對馬嘴,認真回答吧,答好了給你100分!!
總結
以上是生活随笔為你收集整理的c语言程序为什么运行一半就自动关闭了,C语言为什么程序运行一半就出现停止工作...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 龙女天赋加点图s4(龙女出装天赋)
- 下一篇: 计算机二级c语言考试模拟试题,计算机二级