我正在创建一个基于命令行的加密软件。我在这里有一个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.我意识到错误但仍然没有解决问题。
答案 0 :(得分:1)
主要功能可以这样声明:
int main (int argc, char *argv[]);
当你在命令行中调用程序时,argv [0]将是可执行文件的名称,这意味着如果没有其他参数,argc应为1。
答案 1 :(得分:1)
if(argc == 0){...
在if condiction中写==而不是=