Schreibweise für relative Verzeichnisangabe

Gast #2674139
Lesenswert?

Moin,
mein C-Programm soll auf die Datei per fopen zugreifen, die im 
Verzeichnis liegt, wo die ausführbare Datei liegt, die gerade verwendet 
wird. Mit der Angabe von "Dateiname.txt" funktioniert das auch, wenn ich 
die exe anklicke, und die Textdatei im gleichen Verzeichnis liegt.
Wenn ich die exe per Konsole aufrufe, und ich mich z.B. in c:\ befinde, 
die exe aber in d:\ liegt, wird die Datei c:\Dateiname.txt aufgerufen.
Gibt es eine Verzeichnisangabe, die sich auf das Verzeichnis bezieht, wo 
die exe drin ist?
Moderator #2674299
Lesenswert?

In DOS/Windows habe ich meist argv[0] benutzt wie von Klaus beschrieben.
Wenn das Programm nur unter Windows laufen soll, ist GetModuleFileName
aber die sicherere Lösung:

  http://stackoverflow.com/questions/383973/is-args0-guaranteed-to-be-the-path-of-execution

Wenn das Ganze portabel sein soll, wird es ziemlich schwierig:

  http://stackoverflow.com/questions/1023306/finding-current-executables-path-without-proc-self-exe

Evtl. behilft man sich dann mit #ifdef-Konstrukten.
Gast #2685276
Lesenswert?

Hallo,

im Programm schon, siehe Vorredner. Aber nicht in einer Konsole, da hat 
jede ihr eigenes aktuelles Verzeichnis, und das ist höchstens zufällig 
das mit der EXE.

Seit DOS gibt es die Path-Variable, aber die müsste global gesetzt sein 
und dann versaut man das System mit Path-Einträgen für jede denkbare 
Software.

Gruss Reinhard

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren