Parameter über Kommandozeile an main() bei Visual C++
-
Hi,
ich hab hier schon gesucht, aber leider nichts passendes gefunden. Ich möchte eine Konsolenanwendung schreiben bei der ich beim Dateiaufruf Parameter an main() übergeben kann (also programm.exe -text.txt).#include "stdafx.h" #include <iostream> using namespace std; int main(int argc, _TCHAR* argv[]) { cout << argv[1] << endl; return 0; }
wenn ich dann einfach programm.exe aufrufe gibt er 00000000 aus, wenn ich programm.exe -text.txt aufrufe gibt er 00354ed5 aus. Kann mir da jemand helfen?
-
Nür C...
int main(int argc, char *argv[]) { int i; for (i = 0; i < argc+1; i++) printf("%s\n", argv[i]); return 0; }
-
Da hast du offenbar die UNICODE-Variante deines Programms erwischt. D.h. TCHAR = wchar_t (und cout gibt nur char*'s als String aus, bei wchar_t*'s gibt er die Adresse in Hex-Format an). Die Lösung hat kekse schon genannt - nimm' lieber "char*argv[]" (damit bist du nebenbei auch noch standardkonform)
-
Danke für eure Antworten! Ich habs jetzt so gemacht:
int main(int argc, char* argv[]) { if (argv[1]) cout << argv[1] << endl; return 0; }
Also mit char* argv[] und einer Abfrage denn wenn ich in der Kommandozeile keine parameter übergebe kommt ein Fehler ala "test.exe hat ein Problem verursacht und muss beendet werden blabla...".
-
Sollte vllt heisen
if(argc == 2){ cout << argv[1] << endl; return 0; } else return 1;
Edit: argc gibt an wie viele Parameter übergeben wurden.