mit fopen in anderem ordner speichern



  • Also bei fopen() gibst du doch zwangsläufig einen Pfad an, oder? Ich nehmen an du hast bis jetzt immer nur "balbal.txt" als Pfad genommen und bist davon ausgegangen, dass das Verzeichnis in der deine Exe ist auch das momentane Arbeitverzeichnis ist. Das sollte man jedoch vermeiden. Gib lieber einen absoluten Pfad wie C:\Tools\Lalala\test.txt! Wenn du dabei in ein Unterverzeichnis des Verzeichnisses in dem deine Exe ist schreiben willst, verwende GetModuleFileName()



  • Ich halte relative Adressierung für sinnvoller, da portabel.

    FILE *fp;
    fp=fopen("..\\bla.txt", "r");
    fp=fopen("Unterordner\\bla.txt", "r");
    

    Gruß
    Entyl Sa



  • Und was wenn zum Beispiel mal ein OpenDialog benutzt wird??? Dann is CurrentDirectory im Nirvana.



  • Entyl_Sa schrieb:

    Ich halte relative Adressierung für sinnvoller, da portabel.

    FILE *fp;
    fp=fopen("..\\bla.txt", "r");
    fp=fopen("Unterordner\\bla.txt", "r");
    

    Du schreibst was von Portabilitaet und benutzt Backslash? / Funktioniert sowohl unter Posix-kompatiblen Betriebssystemen als auch unter Windows, \ dagegen nur unter Windows.



  • nirsaja schrieb:

    Und was wenn zum Beispiel mal ein OpenDialog benutzt wird??? Dann is CurrentDirectory im Nirvana.

    Ich habe keine Ahnung was ein OpenDialog ist, ich gehe jetzt einfach mal davon aus das es nichts Standard C spezifisches ist. Für mich steht das aktuelle Verzeichnis schon fest. Aber an Stellen wo das nicht der Fall ist hast du dann ja wohl recht.

    Gruß
    Entyl Sa



  • SG1 schrieb:

    Du schreibst was von Portabilitaet und benutzt Backslash? / Funktioniert sowohl unter Posix-kompatiblen Betriebssystemen als auch unter Windows, \ dagegen nur unter Windows.

    Dann ändere das doch einfach. 😉
    Ich habe allerdings nicht gemeint das es auf andere Betriebssysteme portierbar ist, sonder das du das Programm mit seiner Verzeichnisstruktur auf deiner Festplatte hin kopieren kannst wo du willst ohne Probleme zu bekommen.

    Gruß
    Entyl Sa



  • Also wenn ich mal von Windows als OS ausgehen darf...
    GetFileModuleName() + Rest des Pfades ist genauso "portabel" und bei weitem besser als sich auf das Arbeitsverzeichnis zu verlassen.



  • Aber mit GetModuleFileName() bekommt man andere Ergebnisse als mit relativen Pfaden.

    Man beachten das aktuelle Directory.



  • Ist GetModuleFileName() ANSI-C???



  • AJ schrieb:

    Ist GetModuleFileName() ANSI-C???

    nö!

    aber ich schrieb:

    Also wenn ich mal von Windows als OS ausgehen darf...

    Shade Of Mine schrieb:

    Aber mit GetModuleFileName() bekommt man andere Ergebnisse als mit relativen Pfaden.

    Ja sicher. Die Frage ist nur, ob man das will...

    Ich würde sagen derjenige, der das Posting erstellt hat sollte mal schreiben was er genau will!


Anmelden zum Antworten