Avatar billede _et Praktikant
03. november 2011 - 13:19 Der er 2 kommentarer og
1 løsning

Problem med typekonvertering - måske

Hej.

Jeg har dette lille program som bare kører og logger tiden for hver loop
Men output filen bliver fuld af mærkelige tegn og tiden som jeg ønsker.

Mit bud er at strengen ikke bliver "klippet" korrekt når den konverteres/skrives ??

Jeg har forsøgt at anvende itoa() med det vil ikke lykkes så derfor sprintf()?? - det er sikkert problemet !

Har nogen et bud på problemet?
Mvh
Teddy

her er koden:

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

FILE *fp;
int antalSamples;
int sleepTime;
char timeStamp[30];

int main(int argc, char* argv[])
{
struct timespec time1;
  if(argc < 4)
    { 
      printf("Syntax: ./timeLogger SleepTime AntalSamples logFile");
      return 0;
    }
 
  fp=fopen(argv[3], "w+");
  antalSamples = atoi(argv[2]);
  sleepTime = atoi(argv[1]);

  clock_gettime(CLOCK_REALTIME, &time1);
  sprintf(timeStamp, "%ld\n", time1.tv_nsec);
  fwrite(timeStamp, sizeof(timeStamp), sizeof(timeStamp), fp);

  while(antalSamples--)
    {

      clock_gettime(CLOCK_REALTIME, &time1);
      sprintf(timeStamp, "%ld\n", time1.tv_nsec);
      fwrite(timeStamp, sizeof(timeStamp), sizeof(timeStamp), fp);
      //      printf("%s",timeStamp);
    }
  fclose(fp);
}
Avatar billede arne_v Ekspert
03. november 2011 - 13:54 #1
fwrite(timeStamp, sizeof(timeStamp), sizeof(timeStamp), fp);

skal nok vaere

fwrite(timeStamp, 1, sizeof(timeStamp), fp);

eller

fwrite(timeStamp, sizeof(timeStamp), 1, fp);
Avatar billede arne_v Ekspert
03. november 2011 - 13:55 #2
Og saa burde du nok bruge fprintf, men det er en anden sag.
Avatar billede segmose Nybegynder
07. november 2011 - 11:52 #3
Hvis du skriver sizeof(timeStamp)får du hele længden af timeStamp ud, skriver du strlen vil du nok få et bedre result.
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