2012-11-14 85 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为您完成这项工作。两者都不是便携式的,但都被广泛使用。