2016-08-09 189 views
-1

ich den Namen/Pfad der Datei durch diesen Code und verfolgen seine Ausgabe vonVerwendung popen und argv [1] (Name der Datei)

FILE* lsofFile_p = popen("c:\\adb install " + argv[1] , "r");

und argv [1] geöffnet verwenden möchten Dieser Weg gibt Fehler im Gebäude

+0

Welchen Fehler im Gebäude bekommen Sie? Auf welche Bibliotheken verweisen Sie - was beinhaltet? –

+0

Dies ist C-Code. Warum das C++ - Tag? In C++ haben Sie bessere Möglichkeiten als mit 'FILE *' 's ... –

+0

ja in der Build nicht aus Bibliotheken meine Bibliotheken # include #include #include #include

Antwort

1

Das ist im Wesentlichen, weil Sie versuchen, ein char[] Array Literal zu einem char* Typ hinzufügen: der Compiler wird das nicht mögen, da die Typen nicht übereinstimmen.

Schreiben (std::string("c:\\adb install ") + argv[1]).c_str() zum Verketten Ihrer Zeichenfolgen wird es beheben. Dies beruht auf Operator überladen von + zu std::string, und c_str() extrahiert den Zeichenpuffer. Also, in voller Länge:

FILE* lsofFile_p = popen((std::string("c:\\adb install ") + argv[1]).c_str(), "r");

Sie den Wert argc überprüfen obwohl vor dem Elemente der argv lesen.

+0

das ist #include sind auch gibt einen Fehler FILE * lsofFile_p = popen (Std :: string ("c: \\ adb install") + argv [1]). c_str(); ist es wegen der "r" was ist die Bedeutung fehlt es in der Zeile –

+0

Ich habe den vollständigen Text in der Sie müssen eingeben: Sie haben Ihre c_str() an der falschen Stelle. – Bathsheba

+0

Vielen Dank, aber gut, bitte fügen Sie einen Verweis-Link als ich daraus lernen kann, wie diesen Code zum Beispiel wie ich es mit Char-Array verwenden kann, da es Fehler in dieser Zeile gibt FILE * lsofFile_p = popen ((Std :: string ("c: \\ adb connect") + ip [20]). c_str, "r"); und die IP [20] = 192.168.156.655: 6985 zum Beispiel –