16. november 2004 - 00:45Der er
28 kommentarer og 1 løsning
funktioner og sprintf
Hej folkens...
Jeg har et problem...
jeg har 3 variable int r1, r2; double r3;
Disse værdier skal, når de er regnet ud lægges ned i et array... har så fået at vide at jeg skal bruge "sprintf", men det kan jeg ikke finde ud af.
Formen som arrayets data gerne skulle have er: 12:23:21 altså r1:r2:r3... hvis i forstår...
Her er mit forslag:
/* Funktion: Nytid til Gammeltid */ char Gtid(char Nytid[6]) { int t, m, s; int r1, r2; double tid, r3; char Gt[7];
t = (((int)Nytid[0]-48)*10)+((int)Nytid[1]-48); m = (((int)Nytid[3]-48)*10)+((int)Nytid[4]-48); s = (((int)Nytid[5]-48)*10)+((int)Nytid[6]-48); tid = ((t*10000)+(m*100)+s)/(125./54.);
/* Funktion: Nytid til Gammeltid */ char *Gtid(char Nytid[6]) { int t, m, s; int r1, r2; double tid, r3; static char Gt[7];
t = (((int)Nytid[0]-48)*10)+((int)Nytid[1]-48); m = (((int)Nytid[3]-48)*10)+((int)Nytid[4]-48); s = (((int)Nytid[5]-48)*10)+((int)Nytid[6]-48); tid = ((t*10000)+(m*100)+s)/(125./54.);
char *Gtid(char Nytid[7]) { int t, m, s; int r1, r2; double tid, r3; static char Gt[7];
t = (((int)Nytid[0]-48)*10)+((int)Nytid[1]-48); m = (((int)Nytid[3]-48)*10)+((int)Nytid[4]-48); s = (((int)Nytid[5]-48)*10)+((int)Nytid[6]-48); tid = ((t*10000)+(m*100)+s)/(125./54.);
jep... den skal lave nytid om til alm tid... og til dem der ikke ved hvad nytid er: Da man gik over til meter systemet var der en snedig franskmand (tror jeg det var) der lavede et tidsystem der passede til, men det slog aldrig an. Men det går ud på at der er 20 timer på et døgn og der går 100 minutter på 1 timer, og 100 sekunder på 1 minut...
nåe... jamen jeg får nogen fejl... bare ikke alle... jeg ved ikke rigtig hvad og hvornår... plejer at bruge et eller andet Unix program så... men smider du ikke et svar? smutter nemlig snart
Husk at gøre buf "stor nok". For at være på den sikre side kunne du bruge snprintf i stedet for sprintf (husk at nul-terminere, snprintf og strncpy nul-terminerer ikke når de fylder bufferen helt ud). Eksempel:
int number = 42; const int bufsize = 32; char buf[bufsize]; snprintf(buf, bufsize - 1, "Here is the number %d", number); buf[bufsize - 1] = 0;
(Afhængigt af hvor ny din C er kan du erstatte const int bufsize med en #define).
Hvad mener du med "men det er mere pålidligt i fejlmeddelser og sådan" ?
Hvis der er andre der har bidraget til løsning af dit problem kan du bede dem om at lave et svar, ellers laver du selv et svar som du derpå accepterer. ranglen's løsning er så vidt jeg kan se rigtig.
jeg mener bare at der er fejlmeddelser når der er fejl... hvor jeg i windows nogen gange for fejlmeddelserne (de fleste), men andre så spørger den om den skal sende et eller andet til microsoft...
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.