kommandokonsolenargumente übergeben



  • hallo, ich bekomme einen fehler, dass ich inkompatible typen habe... wie bekomme ich folgendes programm zum laufen?

    #include <iostream>
    using namespace std;
    
    int main (int argc, char *argv[])
    {
    	char test[10];
    	test = argv[1];
    	cout << argv[1];
    }
    

  • Mod

    Was soll das denn tun?

    Hier ist etwas syntaktisch korrektes, aber ob das macht was du willst, kann ich nur raten:

    #include <iostream>
    using namespace std;
    
    int main (int argc, char *argv[])
    {
        char *test;
        test = argv[1];
        cout << argv[1];
    }
    


  • hey, danke kann ich mit *test im folgenden wie mit test[10] umgehen, sprich auf das element test[bla] zugreifen?
    danke für die hilfe!


  • Mod

    sudo rm -rf schrieb:

    hey, danke kann ich mit *test im folgenden wie mit test[10] umgehen, sprich auf das element test[bla] zugreifen?
    danke für die hilfe!

    Jain. Du kannst darauf mit der Arrayschreibweise test[bla] zugreifen, aber test ist kein char[10] (warum eigentlich 10?).



  • SeppJ schrieb:

    (warum eigentlich 10?).

    Wahrscheinlich, weil das alle™ Fälle abdecken soll. Wieso mit argc hantieren, wenn 10 auch funktioniert? 🤡


  • Mod

    Nexus schrieb:

    SeppJ schrieb:

    (warum eigentlich 10?).

    Wahrscheinlich, weil das alle™ Fälle abdecken soll. Wieso mit argc hantieren, wenn 10 auch funktioniert? 🤡

    argc hilft hier auch nicht weiter. Das test zeigt hier auf einen der Kommandozeilenparameter und nicht auf das Array mit den Zeigern auf die Kommandozeilenparameter (welches die Länge argc hat). Die Kommandozeilenparameter sind jedoch nullterminierte Strings unbekannter Länge (bevor man nachzählt).


Anmelden zum Antworten