cmd aus c programm starten



  • mit einem kleinen getchar(); funktioniert alles perfekt jetzt vielen dank ! 🙂



  • hey ich würd jetzt gerne noch mehere sachen einlesen und dann es hintereinder reinschreiben habs so versucht klappt aber nicht:

    system( std::string( std::string( std::string( "adb push \"" ) + package  + path + "\"" )).c_str() );
    


  • tyson9 schrieb:

    klappt aber nicht

    Tolle Fehlerbeschreibung.

    Tipp: Bastel erst deinen Befehlsstring zusammen und ruf dann mit dem fertigen String system auf.

    Und schau dir den fertigen String an (Debugger oder Ausgabe auf der Konsole).



  • vielen dank werd mir einen befehlsstring basteln aber mich hätte interessiert wie es ohne dem geht, also irgendwas stimmt mit meinem geposteten code nicht. wenn ich es ausführe liefert mir ADB nur zurück das es nicht geklappt hat, deshalb die nicht vorhandene fehlerbeschreibung 😉



  • Vermutlich ist das Problem, dass du package und path direkt aneinanderklatschst, ohne ein trennendes Leerzeichen.



  • MFK schrieb:

    Vermutlich ist das Problem, dass du package und path direkt aneinanderklatschst, ohne ein trennendes Leerzeichen.

    habs auch so versucht:

    system( std::string( std::string( std::string( "adb push \"" ) + package + "\"" + path + "\"" )).c_str() );
    

    gleiches problem...



  • tyson9 schrieb:

    habs auch so versucht:

    Darum solltest du meine Tipps befolgen, damit du das Ergebnis deiner Basteleien siehst.

    Dein Code erzeugt

    adb push "package"path"
    

    Sicher nicht das, was du willst, oder?



  • MFK schrieb:

    tyson9 schrieb:

    habs auch so versucht:

    Darum solltest du meine Tipps befolgen, damit du das Ergebnis deiner Basteleien siehst.

    Dein Code erzeugt

    adb push "package"path"
    

    Sicher nicht das, was du willst, oder?

    nicht so ganz hehe 😃

    system( std::string( std::string( std::string( "adb push \"" ) + package + \"" + path + "\"" )).c_str() );
    

    so bekomm ich einen error beim compiliern:

    [Error] stray '\' in program
    

    was mach ich denn falsch ?



  • system( std::string( std::string( std::string( "adb push \"" ) + package + \"" + path + "\"" )).c_str() );
                                                                               ^
    

    Mit einem Backslash leitest du eine Escapesequenz innerhalb eines Zeichenkettenliterals ein. Der markierte Backslash steht nicht in einem Zeichenkettenliteral, sondern einfach so im Code rum. Damit kann der Compiler nichts anfangen.

    Du merkst vielleicht so allmählich, dass zufälliges Rumprobieren nicht besonders zielführend ist.



  • Spätestens jetzt sollte jemand std::ostringstream erwähnen:

    #include <string>
    #include <iostream>
    #include <sstream>
    
    using namespace std;
    
    int main()
    {
       string package = "package";
       string path = "path";
    
       ostringstream oss;
       oss << "adb push" 
           << " \"" << package << "\""
           << " \"" << path << "\"";
    
       system( oss.str().c_str() );
    }
    

    Ohne Gewähr. Für nix.



  • leider immer noch keine lösung gefunden 😞



  • tyson9 schrieb:

    leider immer noch keine lösung gefunden 😞

    sry bitte löschen hab die 2 seite übersehen ! 😃



  • MFK schrieb:

    system( std::string( std::string( std::string( "adb push \"" ) + package + \"" + path + "\"" )).c_str() );
                                                                               ^
    

    Mit einem Backslash leitest du eine Escapesequenz innerhalb eines Zeichenkettenliterals ein. Der markierte Backslash steht nicht in einem Zeichenkettenliteral, sondern einfach so im Code rum. Damit kann der Compiler nichts anfangen.

    Du merkst vielleicht so allmählich, dass zufälliges Rumprobieren nicht besonders zielführend ist.

    ja das merke ich aber deshalb frag ich ja hier nach. kann ich es dann in der struktur überhaupt machen ?



  • Hab leider noch immer keine Lösung dafür gefunden 😞 das mit dem befehlsstring zusammenbasteln hab ich auch nicht so hinbekommen wie es sein sollte. kann mir wer helfen bitte ?



  • Hast du die Tipps befolgt? Was ist dabei rausgekommen?



  • MFK schrieb:

    Vermutlich ist das Problem, dass du package und path direkt aneinanderklatschst, ohne ein trennendes Leerzeichen.

    Befolge den Tipp von MFK bzw. die Lösung von DocShoe!

    system(std::string(std::string(std::string("adb push \"") + package + "\" \"" + path + "\"")).c_str());
                                                                             ^
    

Anmelden zum Antworten