Systemcd in eine Variable?

Hallihallo!

Damits nich so lang wird komm ich gleich auf den Punkt:
Ich frage mich, ob es eine Möglichkeit in C++ gibt, den durch den Befehl system(„cd“) ausgelesenen Pfad in eine Variable (string) zu stecken, um sie später ausgeben zu lassen.

Wenn es jemand von euch weiß, wäre es super, wenn ichs erfahren dürfte ;-D

Vielen Dank schon mal im Vorraus!!!

Hi,

„cd“ wechselt in das Home-Verzeichnis. Wo wird da ein Pfad ausgegeben?

„pwd“ druckt den aktuellen Pfad, es sollte aber einfacher sein, die gleichnamige Umgebungsvariable in einen String einzulesen.

Das Ergebnis eines Programmaufrufes ist immer ein Integer, die system-Funktion wird diesen weiterreichen.

Die einfachste Variante, nach den Umgebungsvariablen, ist, dass das aufgerufene Programm den gewünschten Text in eine Datei schreibt, z.B. mittels Pipe oder Umleitung, und dass dann der String aus dieser Datei eingelesen wird.

Gruß Lutz

Hallo Lutz!

Wenn ich eine .exe Datei laufen lasse mit folgendem Inhalt

int main()
{system(„cd“);
getchar();}

dann gibt er mir den Pfad aus, aus dem das Programm gestartet wurde. Das ist doch das selbe, als würde ich in der Eingabeaufforderung cd eingeben. Da tut er das doch auch.

Wenn ich dich jetzt richtig verstanden habe, dann soll system(„pwd“) den aktuellen Pfad ausgeben, oder nicht? UNd könntest du das mit dem „die gleichnamige Umgebungsvariable in einen String einzulesen.“ mal genauer erklären? Ich steh noch am Anfang von c++

Wäre wirklich nett, wenn dus machen könntest!!

Grüße
Stromi

Hi,

sicher, auf der Konsole wird was ausgegeben. Das heißt aber noch lange nicht, dass das Programm darauf zugreifen kann.

http://www.cplusplus.com/reference/clibrary/cstdlib/…

Die Funktion heißt getenv.

http://www.cplusplus.com/reference/clibrary/cstdlib/…

/* getenv example: getting pwd */
#include
#include

int main ()
{
char * curdir;
#ifdef _WIN32
curdir = getenv („CD“);
#else
curdir = getenv („PWD“);
#endif
if (curdir!=NULL)
printf („The current directory is: %s“,curdir);
return 0;
}

Unter Windows wird verwirrenderweise dasselbe Kürzel für „change directory“ und „current directory“ (statt „print working directory“) verwendet. Also per Makro das richtige auswählen, „CD“ oder „PWD“.

Zum ausprobieren, was vorhanden ist:
Linux:> echo $PWD

oder

Linux:> set | grep PWD

Windows:> echo %CD%

Gruß Lutz

Hallo,

Wenn ich eine .exe Datei laufen lasse mit folgendem Inhalt

int main()
{system(„cd“);
getchar();}

dann gibt er mir den Pfad aus, aus dem das Programm gestartet
wurde.

Nur, wenn es ein Programm namens ‚cd‘ gibt, das das macht. Was sicher nicht ueberall der Fall ist (bei mir z.B. nicht).

Nimm einfach die getcwd() Funktion aus unistd.h stattdessen, die ist vom POSIX-Standard definiert, und sollte damit halbwegs portabel sein.

Gruesse,
Moritz

Hey, danke Moritz!!! Das war genau das was ich suchte…

An Lutz auch ein großes Danke. Ich hab jetzt verstanden was du meintest, fand die Methode vom Moritz aber einfacher. Ausserdem ist es bei mir nicht auf Windows gelaufen.

Grüße
Stromi