没有输入args时c ++应用程序崩溃

时间:2016-08-10 00:55:03

标签: c++ arguments

我正在创建一个基于命令行的加密软件。我在这里有一个if语句,检查是否没有参数,然后退出代码1。

if (argc = 0) {
    errorExit("No arguments listed. Type \"-h\" for help.", 1);
}

errorExit()在我创建的头文件中。

int errorExit(string errMsg, int errorCode) {
cerr << "Error: ";
cerr << errMsg;
cerr << endl;
exit(errorCode);
return NULL;

}

当我输入无参数时,我的程序会崩溃。

Z:\Code\C++\CodeBlocks\simplecrypt\bin\Debug>simplecrypt.exe
terminate called after throwing an instance of 'std::logic_error'
   what():  basic_string::_S_construct null not valid

This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.

Z:\Code\C++\CodeBlocks\simplecrypt\bin\Debug>

为了清除混淆我正在使用带有mingw的代码块,以防它在mingw中出现错误。

编辑:我意识到我有argc = 0而不是argc == 0.我意识到错误但仍然没有解决问题。

2 个答案:

答案 0 :(得分:1)

主要功能可以这样声明:

int main (int argc, char *argv[]);

当你在命令行中调用程序时,argv [0]将是可执行文件的名称,这意味着如果没有其他参数,argc应为1。

答案 1 :(得分:1)

if(argc == 0){...

在if condiction中写==而不是=