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.


Anmelden zum Antworten