Avatar billede lordt_nelson Nybegynder
06. juni 2008 - 21:06 Der er 12 kommentarer

fprintf ? kan man dette

Hej
jeg har et display jeg udlæser til. Jeg vil gerne have at tilføre et 0.

kode
char temp=3;
fprint(1," temp=%02d",temp)

output.
3

det skulle være 03

Hvis jeg skriver

fprint(1," temp=%#02d",temp)
output
03

Men når jeg så giver temp = 10 så bliver output 010.

Er der nogen som kender et svar på dette ?
Avatar billede arne_v Ekspert
06. juni 2008 - 21:13 #1
proev:

int temp = 10;
printf("%02d\n", temp);
Avatar billede lordt_nelson Nybegynder
07. juni 2008 - 01:01 #2
Nope Jeg får bare noget mærkeligt...
Avatar billede arne_v Ekspert
07. juni 2008 - 01:51 #3
Hviken compiler på hvilken platform ?

#include <stdio.h>

int main()
{
    int temp = 10;
    printf("%02d\n", temp);
    return 0;
}

virker fint hos mig.
Avatar billede lordt_nelson Nybegynder
07. juni 2008 - 13:17 #4
Hej jeg fandt ud af hvorfor, men ikke løsningen...

når man skriver 0 skriver den rigtig 0, men det er jo asci værdien som mit diplay læser. Der efter skriver den ingenting i feltet. Den skal have værdien 48 som svare til et 0 i ascii.

Ved du om det er muligt at ændre i funktion fprintf og i så fald hvor man gør det henne ?

0 Left-pads the number with zeroes (0) instead of spaces, where padding is specified (see width sub-specifier). http://www.cplusplus.com/reference/clibrary/cstdio/fprintf.html
Avatar billede arne_v Ekspert
07. juni 2008 - 14:53 #5
int temp = 0;
    printf("%d\n", temp);

og

    char temp = 48;
    printf("%c\n", temp);

skriver begge 0 ud.
Avatar billede lordt_nelson Nybegynder
07. juni 2008 - 15:17 #6
Men mit display udlæser
ved
int temp = 0;
    printf("%d\n", temp);
output: 0

Men int temp = 3;
    printf("%d\n", temp);

bliver output: 3 og ikke 03. Den udlæser ikke 0 men lave en blank plads
Avatar billede arne_v Ekspert
07. juni 2008 - 19:27 #7
Med leading zero skal du bruge %02d
Avatar billede segmose Nybegynder
09. juni 2008 - 10:05 #8
Da cplusplus ikke lige kender fprint og fprintf har formen

int fprintf ( FILE * stream, const char * format, ... );

kan jeg ikke se hvordan du overhovedet kan få noget ud i dit oprindelige indlæg, idet

char temp=3;
fprint(1," temp=%02d",temp)

1 ikke er en stream, og temp er en char så fprintf vil tage en eller 3 extra byte ved siden af den temp som i dit tilfælde tilfældigvis er 0.

Prøv derfor at lave et standalone program som det arne_v viser i indlægget 07/06-2008 01:51:24
Avatar billede arne_v Ekspert
09. juni 2008 - 14:30 #9
god set - fprint != fprintf
Avatar billede bertelbrander Novice
10. juni 2008 - 23:45 #10
Når spørgeren skriver "display" kunne jeg få en mistanke om at han programmerer til en eller anden embedded platform. Disse har, af pladshensyn, ikke altid implementeret det fulde sæt features for printf, eller man skal måske gøre noget specielt for at få alle features med.
Avatar billede lordt_nelson Nybegynder
10. juni 2008 - 23:53 #11
lige præcis  - og jeg har fundet svaret og det bliver også postet her. Men jeg skal lige først aflever min opgave...
Avatar billede arne_v Ekspert
11. juni 2008 - 15:48 #12
Der er ikke andet end boevl med systemer med mindre end 512 MB ...

:-)
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