www.mikrocontroller.net

Forum: PC-Programmierung Schreibweise für relative Verzeichnisangabe


Important announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: Schlumpfine (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht 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?

Autor: Klaus Wachtler (mfgkw)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Eigentlich nicht.

Aber du kannst dir mal in main() das erste Argument ausgeben lassen:
int main( int nargs, char **args )
{
    puts( args[0] );
}

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.

Autor: Yalu X. (yalu) (Moderator)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht 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...

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

  http://stackoverflow.com/questions/1023306/finding...

Evtl. behilft man sich dann mit #ifdef-Konstrukten.

Autor: Reinhard Kern (Firma: RK elektronik GmbH) (rk-elektronik)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel




Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder GIF-Format hochladen.
Siehe Bildformate
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken erkennst du die Nutzungsbedingungen an.

webmaster@mikrocontroller.netImpressumNutzungsbedingungenWerbung auf Mikrocontroller.net