st_atime



  • Hallo, wollte mal fragen wie man den letzten zugriff auf eine datei ausgeben kann??
    Also wie man dies bei dem eigenen Programm macht, weis ich nur wie stell ich dies bei einer datei unter z.B D:\Programme\ fest?

    -GhostfaceChilla-


  • Mod

    Wenn du es mit deinem eigenem Programm kannst, was hindert dich dann da dran, stat einfach mit einer anderen Datei aufzurufen?



  • Das ist es ja, für das eigene Programm werden ja Kommandozeilen benötigt und der Patrameter *argv[0], aber bei einer anderen datei wie läuft das da ab?Reicht es wenn ich einem string den Pfadname gebe oder muss ich es an die Kommandozeile übergeben?

    -GhostfaceChilla-



  • GhostfaceChilla schrieb:

    Reicht es wenn ich einem string den Pfadname gebe oder muss ich es an die Kommandozeile übergeben?

    Ja!

    Geht beides.



  • #include <stdio.h>
      #include <stdlib.h>
      #include <time.h>
      #include <sys/types.h>
      #include <sys/stat.h>
    
      int main(void)
      {
    
        struct stat s;
    
        stat("C:\Haha.txt", &s);
        printf("%s", ctime(&s.st_atime));
    
        return EXIT_SUCCESS;
    }
    

    Habs mal so ausprobiert nur kommt dann i-ein Zufallsdatum raus, warum??

    -GhostfaceChilla-


  • Mod

    Prüf die Rückgabewerte! Dann hättest du festgestellt, dass stat hier einen Fehlerwert zurück gibt.

    \H ist irgendeine Escapesequenz. \\ ist ein Backslash. Oder nimm gleich Forwardslashes /, wie es sich gehört.



  • Danke danke 🙂
    Wie könnte ich aber die Datei die ich auslese dann löschen?
    Mit der Funktion remove() ist klar, aber was soll in die Klammern?
    Müsste ich erst einem String den Pfad übergeben, sodas ich diesen String dann in die Klammernschreibe?Aber wie überge ich einem String den Pfad von s.st_atime?

    -GhostfaceChilla-



  • Wie sieht denn der Protoyp von remove aus?

    Schau doch mal in die Hilfe von deinem Compiler.



  • Ich komm einfach nicht drauf.Mein größtes Problem ist wohl folgendes:

    stat("C:/Haha.txt", &s);
    

    Mit diesem Aufruf wird der Pfad der Struktur stat übergeben, nur kapier ich nicht ganz, wo das denn abgespeichert wird oder was genau in diesem Moment passiert.Könnte mir dies einer erklären?Weil ich weis nicht aus welcher Variable oder sonst was ich diesen Pfad herbekomme um ihn in einen anderen String zu kopieren.

    -GhostfaceChilla-



  • Dann schau dir doch die Definition von der struct an.

    Nach Eingabe von msdn stat in google kam als zweites gleich
    http://msdn.microsoft.com/en-us/library/14h5k7ff.aspx

    Sogar mit Beispiel.



  • Danke, danke.
    Ok hab mich dazu entschlossen, einfach den Pfad in einen String einzugeben.
    Denn auf diesen String kann ich dann immer zugreifen und ihn verändern, denn durch

    stat("C:/Haha.txt", &s);
    

    ist es schwieriger als mit

    stat(_path, &s);
    

    z.B.

    -GhostfaceChilla-



  • Hey habe folgendes Problem und zwar bekomme ich hierbei immer die Rückmeldung "Datei nicht gefunden" obwohl sie existiert:

    switch(attr_wahl)
        {
            case 1: clrscr();
                    do
                    {
                        printf("Dateipfad: ");
                        fflush(stdin);
                        fgets(file_path, 50, stdin);
                        stat(file_path, &_path);
                        if(access(file_path, 00) != -1 )
                            error = 0;
                        else
                            printf("!!Datei nicht gefunden!!\n");
    
                    }while(error != 0);
    

    Warum?Ich kapiere nicht woran das liegt, hab schon probiert in google was zu finden oder mithilfe des Buches, doch komm ich nicht drauf woran es liegt.

    -GhostfaceChilla-



  • Mach mal nach dem fgets ein:

    printf("Datei : <%s>\n", file_path);
    

    Wenn die Ausgabe so aussieht:

    Datei: <C:\xyz.txt
    >
    

    ist das abschließende '\n' noch in file_path.
    (Das ist die Return/Enter-Taste)

    Siehe auch http://www.cplusplus.com/reference/clibrary/cstdio/fgets/



  • Tz ok danke danke hat gekplappt was ein dummer Fehler, jetzt funktionierts 🙂

    -GhostfaceChilla-


Log in to reply