我有这样的程序在C ++:

#include <iostream>
using namespace std;
int main()
{
char buf[50];
cin.getline(buf,49);
system(buf);
return 0;
}

当我运行并编译和类型例如“HELO”,我的程序将打印错误:

  "helo" not found.

我可以阻止显示此错误?有任何方法来禁用从系统命令错误?

有帮助吗?

解决方案

您不能改变system的方式显示错误。 C和C ++放很少就这方面的实现没有要求,所以它的大型部件遗留未指定的,以允许它们尽可能灵活。

如果你想更精确的控制,你应该用你的运行时库或系统操作界面的功能。尝试execvp(见man execvp)在Linux / UNIX或Windows系统的CreateProcess函数,它使用Windows的API,允许在错误处理和其他的东西很大的控制。

其他提示

您在Linux上?尝试键入 “./hello”

如果此方法有效,其原因在于当前目录(“”)是不是在搜索路径。你必须表明其编译的程序是“有”的目录。

另外,你可以做这样的事情。

出口PATH = $ PATH:

此将 “” (当前目录)到搜索路径。

如果您使用的是Windows,试图 “用hello.exe”

如果你是在Linux上,你可以尝试错误输出重定向到null设备?

strcat(buf, "2> /dev/null");
system(buf);
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top