2012-11-14 116 views
-3

我想編譯一個C程序,當我用Windows編寫的時候。我正嘗試在Linux(Ubuntu 12.04)中使用相同的IDE編譯相同的項目(Code :: Blocks)。我的程序中有幾個System("CLS")函數。但Linux控制檯說
sh: 1:CLS: not found
Segmentation fault (core dumped)

我已經包括<stdlib.h><stdio.h>(和幾個當然)。Linux控制檯; CLS找不到錯誤

+0

什麼是'System()'? – 2012-11-14 17:37:15

+1

如果您希望您的代碼具有可移植性,則不能調用可能存在或不存在於任何特定系統上的任意系統命令。事實上,你不應該假設系統有一個屏幕,直到你檢查它是否有。如果您正在使用行式打印機或文字轉語音引擎,「CLS」會做什麼?如果你的輸出被重定向到一個文件會怎麼辦? –

回答

7

問題是命令CLS只存在於Windows上。對於Linux,您需要的命令是:clear

無論如何,這隻能部分地解決這個問題:1)你有同樣的問題,如果你口你的程序在Windows機器,和b)沒有理由爲生產分割故障。

2

system命令在本地系統上運行shell命令。 cls是一個有效的DOS/Windows命令,但它在Linux上不存在。 Linux上的clear命令提供了類似的功能。

分段錯誤表明您沒有正確處理錯誤。

1

CLS是一個不可能在您的Linux機器上找到的舊的MS-DOS命令。你不應該依靠產生另一個進程來清除你的控制檯文本。您可以致電clearuse ANSI escape codes爲您完成這項工作。兩者都不是便攜式的,但都被廣泛使用。