[C/C++] Anfängerfrage Erstellungsdatum einer Datei ausgeben

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von babybjörn, 15. April 2010 .

  1. 15. April 2010
    Anfängerfrage Erstellungsdatum einer Datei ausgeben

    Hallo Jungs,
    meine Aufgabe ist es ein vorhandens Programm das ich mit dem Pfad einer am PC liegenden Datei füttere dazu zu bringen nicht nur das Erstellungsdatum (was es bis jetzt tut) ausgeben zu lassen sondern auch die Uhrzeit,
    kann mir wer weiter helfen ?

    Hier mal das Script

    Spoiler
    #include <stdio.h>
    #include <windows.h>

    // fn2time wird hier nur als Black Box benutzt.
    // wie es funktioniert, ist nicht Gegenstand
    // dieser Praktikumseinheit.
    // WinAPI-Programmierung wird in IN3/FPK-behandelt
    int fn2time(char pathname[], unsigned short *date, unsigned short *time)
    { HANDLE stream;
    OFSTRUCT OpenBuf;
    FILETIME cre={0,0}, acc={0,0}, wri={0,0};
    int success;

    if ((stream = (HANDLE)OpenFile(pathname, &OpenBuf, OF_READ)) == (HANDLE)HFILE_ERROR)
    { fprintf(stderr, "Ich kann die Datei leider nicht oeffnen.\n");
    system("PAUSE");
    exit(-1);
    }
    success = GetFileTime(stream, &cre, &acc, &wri);
    if(success != TRUE) {
    printf("GetFileTime fehlgeschlagen\n");
    system("PAUSE");
    exit(-1);
    }
    FileTimeToDosDateTime(&cre, date, time);
    return 0;
    }

    // aus der letzten Praktikumsaufgabe bekannt
    void PrintBitLine(unsigned short us)
    { int i;
    for(i=0; i<16; i++)
    { if(us & (0x8000>>i))
    printf("1");
    else
    printf("0");
    }
    printf("\n");
    }


    int main(int argc, char*argv[])
    {
    unsigned short dat, time;
    char buffer[128];

    printf("Geben Sie den Pfad/Namen der datei an\n");
    scanf("%s", buffer);

    fn2time(buffer, &dat, &time);
    printf("Bits: "); PrintBitLine(dat);
    printf("Hex: %x\n", dat);
    printf("%d.", dat & 0x001F); /* druckt den Tag */
    printf("%d.", (dat & 0x1E0)>>5); /* druckt Monat */
    printf("%d ", (dat >> 9) + 1980); /* druckt Jahr */
    printf("\n"); /* Zeilenvorschub */

    //Kurze Variante
    printf("%d.%d.%d\n", dat & 0x001F, (dat & 0x1E0)>>5, (dat >> 9) + 1980);
    ////////////////////////////////////////////
    // Hier die Auswertung fuer time eintragen:
    ////////////////////////////////////////////

    system("PAUSE");
    return 0;
    }


    Dank euch schon mal

    MfG BB
     
  2. 15. April 2010
    AW: Anfängerfrage Erstellungsdatum einer Datei ausgeben

    FileTimeToDosDateTime function (Windows)

    Schau dir das an und dann solltest du es schaffen. Ist nicht's weiter als Bit-Shifting, wie du es schon beim Datum machst.
     
  3. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.