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?
Eigentlich nicht. Aber du kannst dir mal in main() das erste Argument ausgeben lassen:
1 | int main( int nargs, char **args ) |
2 | {
|
3 | puts( args[0] ); |
4 | }
|
Das ist der Name des aufgerufenen Programms. Meines Wissens steht da unter Windows der volle Pfad mit dabei. Falls ja, könntest du das nutzen um daraus den Pfad der Exe zu bekommen.
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.
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
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.