⑴ c語言的gets函數編譯不成功阿,很短的程序
C語言的gets函數一般包含在stdio.h頭文件里,如果沒有包含比頭文件那可能會有問題。第二種情況包含了還出問題,說明你的編譯器已經不支持這個函數了,這個函數非常不安全,容易造成溢出,建議換成fgets函數。
函數原型:
char *fgets(char *buf, int bufsize, FILE *fp);
參數解釋:
參數一是輸入字元串存放地址,
參數二是存放地址最大容量,
參數三是從哪裡輸入,可以從文件也可從輸入設備,如果從輸入設備輸入這個參數可以寫成stdin,如果從文件輸入此參數為文件指針。
返回值:
輸入成功返回參數一,失敗返回NULL.
補充知識:
為什麼gets不讓用呢,我們可以看它的原型:char *gets(char *buf);
這個函數可以一直輸入知道換行或者EOF,它並不考慮buf空間是否足夠大能放下,這就容易導致溢出,有些別有用心的人就會利用這個漏洞去攻擊你的程序。
而fgets可以通過第二參數保證不會讀入超過buf空間的字元。
⑵ C語言程序對,但是編譯不出來是怎麼回事
編譯出來只說明程序沒有語法錯誤,不說明沒亮冊有邏輯錯誤,有錯誤一般會有屏幕輸出,此其一敬知宏。第二,可以在程序中設定一些輸出語句或斷點觀察。第三如果程序不輸入、輸出內容,程序執行是當然看不見東西(不直觀)。第三如果程序一值運行無法退出,說明存在「死循環」。
C語言是一門通用計算機編程語言,應用廣泛。C語言的設計目標是提供一種能以簡易的方式編譯、處理低猛御級存儲器、產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語言。
盡管C語言提供了許多低級處理的功能,但仍然保持著良好跨平台的特性,以一個標准規格寫出的C語言程序可在許多電腦平台上進行編譯,甚至包含一些嵌入式處理器(單片機或稱MCU)以及超級電腦等作業平台。
⑶ C語言編程時出現的那個expected怎麼理解啊
C語言編程時編譯失敗後提示"expected"說明代碼缺乏必要內容導致語法錯誤。
expected表示預期,期望。在C語言編譯失敗後的提示信息中出現時表示編譯器無法通過編譯,且根據其錯誤給出合理的建議。
此處可以發現編譯器提示在花括弧 '{' 前缺乏某些符號,可以幫助我們修改源代碼,但需要注意的是編譯器的判斷可能出錯,該提示信息僅代表源代碼中存在錯誤即可能原因!目前暫時無法准確標注出出錯位置。
C語言程序開發流程如下:
(3)c語言編譯不出去擴展閱讀
C語言出現的錯誤大致上可以分為兩種,一種是語法錯誤,另一種是邏輯錯誤。
大部分語法錯誤將無法通過編譯器編譯,編譯器會報錯並給出提示,設計程序時可以根據編譯器給出的提示檢查源代碼是否符合C語言的標准。
需要注意的是,不同版本的編譯器支持的標准可能存在差異,特別在移植代碼的過程中需要注意。
邏輯錯誤相對較難排除,主要是程序設計時由於邏輯不夠嚴謹導致的程序運行錯誤或無法正常運行。排除邏輯錯誤需要進行調試,檢查程序運行過程數據的變化和堆棧的變化,直到發現問題並解決問題。