datei pfad und namen ausgeben.



  • Hi leute wie kann ich den pfad und den namen meiner datei ausgeben lassen? also die datei soll ihren eigennen pfad und dateinamen auslesen und anzeigen.

    vielleicht könnt ihr mir da weiterhelfen 🙂 danke schon mal 😉



  • Ich denke, dass ist vom BS abhängig. Welches nutzt du?



  • unter linux kriegst den dateinamen mit

    printf("%s", argv[0]);
    

    unter windows geht das auch so, aber wenn ich mich nicht irre, wird hier der
    pfad und der name des programms ausgegeben, also
    c:\schlag\mich\tot\prog.exe

    b4sh0r



  • ist ja ANSI.. unter windows und linux siehts komplett gleich aus.

    du musst jedoch die main funktin so schreiben:

    int main(int argc,char *argv[]) // bzw. void main(...)
    {
       puts(argv[0]);
       getchar();
    }
    


  • chille07 schrieb:

    ist ja ANSI.. unter windows und linux siehts komplett gleich aus.

    Das schon, dummerweise halten sich nicht alle Compiler an den Standard. Der VC6 stellt das afaik nämlich mit Pfad dar...



  • ist das so ein problem? man kann trotzdem damit arbeiten!
    und wenn nicht, dann "streichst" du halt alles bis zum letzten slash "raus"...(sollten slashes vorkomen)
    besser gesagt, ab dem letzten slash (sollten slashes vorkommen!) kopieren

    mfG (c)h



  • chille07 schrieb:

    ist das so ein problem?

    Es ist imho ein Problem wenn sich Compiler nicht an den Standard halten.

    Dass man das mit Gefrickel umgehen kann ist klar, aber dann frage ich mich was für ein Sinn Standards haben...



  • wofür wird jetzt eigendlich der dateiname ohne pfad benötigt?
    das thema lautete doch "datei pfad und namen ausgeben"

    mfg (c)h



  • chille07 schrieb:

    wofür wird jetzt eigendlich der dateiname ohne pfad benötigt?
    das thema lautete doch "datei pfad und namen ausgeben"

    Ich wollte lediglich die Aussage

    unter windows und linux siehts komplett gleich aus.

    relativiren...



  • TactX schrieb:

    Ich wollte lediglich die Aussage

    unter windows und linux siehts komplett gleich aus.

    relativiren...

    re-lati-viren? *g* (ist mir nur gerade ein|auf - gefallen)
    relativieren! heißt es korrekt - aber ok -
    mit linux habe ich wenig am hut.. ich muss dir wohl glauben, dass unter linux ohne pfad dargestellt wird.

    mfg (c)h



  • chille07 schrieb:

    re-lati-viren? *g* (ist mir nur gerade ein|auf - gefallen)
    relativieren! heißt es korrekt - aber ok -

    Jaja, immer auf die Kleinen 😉

    chille07 schrieb:

    mit linux habe ich wenig am hut.. ich muss dir wohl glauben, dass unter linux ohne pfad dargestellt wird.

    Das ist doch auch das Standardverhalten.

    Oder reden wir jetzt komplett aneinander vorbei?



  • ahh.. du meinst ohne pfad ist es standard...

    *gg* ich arbeite unter MSV6.0.. und wie du oben schon erwähnt hast, kannst du dir sicher meine erfahrungen mit argv[0] vorstellen.
    😃
    mfg (c)h



  • chille07 schrieb:

    *gg* ich arbeite unter MSV6.0.. und wie du oben schon erwähnt hast, kannst du dir sicher meine erfahrungen mit argv[0] vorstellen.
    😃

    Ahhh, das war also das Problem 😉

    chille07 schrieb:

    ahh.. du meinst ohne pfad ist es standard...

    Zumindest verstehe ich es laut Standard so

    If the value of argc is greater than zero, the string pointed to by argv[0] represents the program name; argv[0][0] shall be the null character if the program name is not available from the host environment. If the value of argc is greater than one, the strings pointed to by argv[1] through argv[argc-1] represent the program parameters.

    Mit Pfaden wäre es ja auch schwierig.

    - Windows Laufwerksbuchstabe und '\'
    - Unix '/'



  • Hmmm ich denke eher, dass der Aufruf selbst in argv[0] drinsteht (mal von den MS-Compiler Eigenheiten abgesehen). D. h. wenn du das Programm z. B. unter Linux so aufrufst:

    ./programm
    

    dann sollte das auch so in argv[0] drinstehen. Genau kann ich es aber leider nicht im Moment sagen wie es ist oder nach Standard vorgegeben ist :(.



  • AJ schrieb:

    Hmmm ich denke eher, dass der Aufruf selbst in argv[0] drinsteht

    Hmmm, so ist es wohl auch. Naja, was der Standard unter "program name" versteht ist imho auch nicht ganz eindeutig...


Log in to reply