Filepfad
-
Hallo, habe folgende Projektstruktur
root
/src
main.c
/res
resource01.txtWie greife ich in der main.c mit z.B fopen auf resource01.txt zu?
Benutze momentan leider windows, will aber dass es auch auf linux problemlos läuft.
-
Zugreifen tut nicht main.c sondern das daraus compilierte Programm.
Und es hängt davon ab, wo das Programm dann liegt.
Aber wenn das im src-Verzeichnis liegt, wäre das "../res/resource01.txt"
-
Das wäre dann aber nicht das übliche Vorgehen unter Linux und daher überhaupt nicht problemlos. Denn dein Programm wird hinterher höchstwahrscheinlich ganz woanders liegen und daher das Verzeichnis mit dem Sourcecode nie wieder finden. Üblich ist daher, sich vor dem Übersetzen des Programmes einen Installationspfad geben zu lassen (die meisten Programme installieren sich entweder nach /usr/ oder $HOME, je nachdem ob für das Gesamtsystem oder lokal installiert wird, überlass die Wahl aber dem Nutzer und halte dich bei Defaultwerten an die Standardpfade!), in das dann das Programm installiert wird und dort auch seine Ressourcen finden kann.
DirkB schrieb:
Aber wenn das im src-Verzeichnis liegt, wäre das "../res/resource01.txt"
Das .. bezöge sich aber auf das Arbeitsverzeichnis, das wäre in der Regel nicht das Verzeichnis mit der Executable.
-
Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C (C89 und C99) in das Forum Linux/Unix verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Nett, dass dies in Linux/Unix verschoben wurde, denn ich arbeite unter Windows, will es aber auch für Linux/Unix machbar machen wie gesagt.
ich versuche nämlich nun wie folgt zu übersetzen in einer batch datei, was nicht klappen will:
gcc -o game.exe res/main.c
Egal, welchen slash ich nehme, auch ein slash vor res, will nicht klappen.
Wie geht das unter cmd?
-
Deine main.c liegt ja auch in src/ nicht in res/
-
SG1 schrieb:
Deine main.c liegt ja auch in src/ nicht in res/
Für den Pfad ist weder interessant, wo der Sourcecode liegt, noch wo die Executable liegt, sondern nur, was das aktuelle Arbeitsverzeichnis ist. Da dieses beliebig ist, kann ein relativer Pfad nicht funktionieren. Ein absoluter Pfad (oder ein Pfad, der aus Variablen mit den Suchpfaden zusammengebaut wird) kann funktionieren. Oder der Nutzer gibt die Datei selber an. Oder es wird die Datei automatisch im momentanen Arbeitsverzeichnis (oder relativ dazu) gesucht und wenn sie nicht da ist, bekommt man einen Fehler. Kommt eben drauf an, was man genau will. Bloß der Pfad von Code zu Datei oder von Executable zu Datei ist immer irrelevant.
-
SeppJ schrieb:
SG1 schrieb:
Deine main.c liegt ja auch in src/ nicht in res/
Für den Pfad ist weder interessant, wo der Sourcecode liegt, noch wo die Executable liegt, sondern nur, was das aktuelle Arbeitsverzeichnis ist.
Richtig. In der letzten Frage ging's aber ums kompilieren.