2016-08-10 2 views
-1

Ich erstelle eine Befehlszeilen-basierte Verschlüsselungssoftware. Ich habe eine if-Anweisung hier, um zu überprüfen, ob es keine Argumente ist, und beendet mit Code 1.C++ - Anwendung stürzt ab, wenn keine Argumente eingegeben werden

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

errorExit() ist in einer Header-Datei, die ich erstellt.

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

}

Mein Programm statt stürzt ab, wenn ich in keine Argumente eingeben.

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> 

Um Verwirrung zu beseitigen verwende ich Codeblocks mit Mingw, falls es ein Bug in Mingw ist.

EDIT: Ich erkannte, dass ich Argc = 0 anstelle von Argc == 0 habe. Ich erkannte den Fehler, aber immer noch nicht das Problem behoben.

+4

Für Anfang würde ich gut sein, das Sie ändern "if (argc = 0)" auf "==" Vergleichsoperator – fox1406

+0

Sie am ehesten zu wollen return '0' und nicht' NULL'. Obwohl es im Allgemeinen dasselbe bedeutet, verwirrt das Mischen von "int" und "NULL" die Leute. Es wäre schön, ein vollständiges Beispiel zu sehen. –

+0

Wer "NULL" als etwas anderes als eine bloße "0" definiert, ist ein Dorn im Auge der Menschheit. –

Antwort

1

Die Hauptfunktion kann wie folgt erklärt werden:

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

Wenn Sie das Programm in der Kommandozeile aufrufen, würde die argv [0] der Name ausführbar sein, die die argc Mittel 1 sein sollte, wenn es Es gibt keine anderen Argumente.

+0

Also wird der Argc nie 0 sein? – agodinhost

1
if(argc == 0){... 

schreiben == und nicht = in der, wenn condiction

Verwandte Themen