Avatar billede gimmer Nybegynder
08. februar 2004 - 15:03 Der er 3 kommentarer og
1 løsning

Timestamp problem

Jeg har et problem med timestamp.
selve timestampet virker fint, men hvis jeg vil skrive det til en fil virker det ikke.
hvordan skal det gøres? jeg ved godt jeg har udkommenteret selve linien hvor der skrives til en fil, men hvis denne linie aktiveres vil maskinen ikke skrive klokken ud til skærmen via printf() - hvilket jeg benytter som en kontrol
   
Neden for ses koden:

#include <time.h>
#include <stdio.h>


int main ()
{
    //Opretter et timestamp
    time_t time(time_t *tloc);
    time_t the_time=time((time_t *)0);
    struct tm *tm_prt;
    (void) time(&the_time);
    tm_prt =gmtime(&the_time);

    printf("Klokken er: %02d:%02d:%02d",(tm_prt->tm_hour)+1, tm_prt->tm_min, tm_prt->tm_sec);
    char *OTrain_Id;
    char *ONext_Segment;
    char *OCurent_Segment;
    char *OTimestamp;
    char *Train_Id;
    char *Next_Segment;
    char *Curent_Segment;
    char *Timestamp;
   
    FILE *Fil;
    //Overskrifter oprettes
    OTimestamp = "Tid\t\t";
    OTrain_Id = "Tog Id\t\t";
    OCurent_Segment = "Fra Segment\t";
    ONext_Segment = "Til Segment\n";
   
    Timestamp = ("%02d:%02d:%02d",(tm_prt->tm_hour)+1, tm_prt->tm_min, tm_prt->tm_sec);
    printf("%d",Timestamp);
    Train_Id = "23\t\t";
    Curent_Segment = "s1a\t\t";
    Next_Segment = "s7a\n";

    //Åbner og skriver til log filen.
    Fil = fopen ("log.c", "ab");
    fputs (OTimestamp,Fil);
    fputs (OTrain_Id, Fil);
    fputs (OCurent_Segment, Fil);
    fputs (ONext_Segment, Fil);
    //fputs (Timestamp,Fil);
    fputs (Train_Id, Fil);
    fputs (Curent_Segment, Fil);
    fputs (Next_Segment, Fil);
    fclose (Fil);
}
Avatar billede pchris Nybegynder
08. februar 2004 - 15:43 #1
Ja den er jo helt gal.
Prøv med dette:

char Timestamp[10]; // I stedet for din Timestamp erklæring
sprintf( Timestamp, "%02d:%02d:%02d", (tm_prt->tm_hour)+1, tm_prt->tm_min, tm_prt->tm_sec); // I stedet for din Timestamp = (....
printf("%s",Timestamp); // I stedet for din kontrol udskrift
fputs(Timestamp,Fil);
Avatar billede gimmer Nybegynder
08. februar 2004 - 22:58 #2
af en eller anden grund vil maskinen ikke skrive til filen hverken med eller uden time tingen.... Jeg kan godt oprette filen, men ikke skrive i den (ikke engang hvis jeg henter min egen kode fra ovenstående - og implemntere din rettelse). jeg arbejder lige videre på det imorgen så skal du nok få dine point.
Avatar billede pchris Nybegynder
09. februar 2004 - 09:00 #3
Det kører fint her.
Jeg har lige indsat et par tab's i TimeStamp.

#include <time.h>
#include <stdio.h>

int main ()
{
    //Opretter et timestamp
    time_t time(time_t *tloc);
    time_t the_time=time((time_t *)0);
    struct tm *tm_prt;
    (void) time(&the_time);
    tm_prt =gmtime(&the_time);

    printf("Klokken er: %02d:%02d:%02d",(tm_prt->tm_hour)+1, tm_prt->tm_min, tm_prt->tm_sec);
    char *OTrain_Id;
    char *ONext_Segment;
    char *OCurent_Segment;
    char *OTimestamp;
    char *Train_Id;
    char *Next_Segment;
    char *Curent_Segment;
    char Timestamp[12];
 
    FILE *Fil;
    //Overskrifter oprettes
    OTimestamp = "Tid\t\t";
    OTrain_Id = "Tog Id\t\t";
    OCurent_Segment = "Fra Segment\t";
    ONext_Segment = "Til Segment\n";
 
    sprintf( Timestamp, "%02d:%02d:%02d\t\t", (tm_prt->tm_hour)+1, tm_prt->tm_min, tm_prt->tm_sec);
    printf("%s",Timestamp); // I stedet for din kontrol udskrift
    Train_Id = "23\t\t";
    Curent_Segment = "s1a\t\t";
    Next_Segment = "s7a\n";

    //Åbner og skriver til log filen.
    Fil = fopen ("log.c", "ab");
    fputs (OTimestamp,Fil);
    fputs (OTrain_Id, Fil);
    fputs (OCurent_Segment, Fil);
    fputs (ONext_Segment, Fil);
    fputs(Timestamp,Fil);
    fputs (Train_Id, Fil);
    fputs (Curent_Segment, Fil);
    fputs (Next_Segment, Fil);
    fclose (Fil);
}
Avatar billede gimmer Nybegynder
09. februar 2004 - 11:07 #4
mange tak... det var lige i skabet :-O

vh Gimmer
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester