Avatar billede reddevil Nybegynder
14. oktober 2004 - 18:20 Der er 14 kommentarer og
1 løsning

Tjek om input er nummer (begynder)

Hej! Jeg er nybegynder i C og har brug for lidt hjaelp..
Jeg har tidligere med succes brugt foelgende maade til at sikre mig at brugerens input er et nummer

int num, status;

printf("Enter a number or q to quit:  ");
status = scanf("%d", &num);
while (status == 1)
{
KODE
}


Men hvis jeg aendrer "num" til at vaere en float faar jeg problemer.  Programmet finder ganske rigtig ud af om "status" skal vaere 1 eller 0, men "num" bliver gemt som 0.000 lige meget hvad!!

Help please..
Avatar billede arne_v Ekspert
14. oktober 2004 - 18:22 #1
Husker du at ændre %d til %f ?
Avatar billede reddevil Nybegynder
14. oktober 2004 - 18:23 #2
jep.. det har jeg husket..
Avatar billede reddevil Nybegynder
14. oktober 2004 - 18:24 #3
ups, "num" bliver aendret til en double ikke float.. men det aendre vel naesten det samme..
Avatar billede arne_v Ekspert
14. oktober 2004 - 18:25 #4
double er ok
Avatar billede arne_v Ekspert
14. oktober 2004 - 18:26 #5
Hvordan skriver du num ud ?
Avatar billede arne_v Ekspert
14. oktober 2004 - 18:28 #6
Nej.

double er ikke godt nok

%f skal have en float
Avatar billede reddevil Nybegynder
14. oktober 2004 - 18:28 #7
printf("%f", num);
Avatar billede arne_v Ekspert
14. oktober 2004 - 18:29 #8
En double kræver %lf

Sorry
Avatar billede reddevil Nybegynder
14. oktober 2004 - 18:30 #9
ok.. kan se det virker hvis jeg aendrer float til double! Men jeg har altsaa brug for en double!!
Avatar billede reddevil Nybegynder
14. oktober 2004 - 18:34 #10
okay.. nu bruger jeg %lf i scanf og det virker :) Takker..

Kan du forklare hvorfor dette skal til?
Avatar billede arne_v Ekspert
14. oktober 2004 - 18:43 #11
lf = long float = double
Avatar billede arne_v Ekspert
14. oktober 2004 - 18:44 #12
og et svar
Avatar billede reddevil Nybegynder
14. oktober 2004 - 18:52 #13
Fremragende.. saa blev jeg det klogere :)
Avatar billede bertelbrander Novice
14. oktober 2004 - 19:48 #14
Når man udskriver en float med printf bliver den lavet om til en double (det gælder for alle floats overført vha ...) derfor er der ikke forskel på at udskrive en float og en double.
Men når man læser en float vha scanf overfører man en float * vha ..., denne bliver ikke lavet om til en double *, derfor er der forskel på at læse en float og en double.
Avatar billede mollevp Nybegynder
17. oktober 2004 - 00:18 #15
Hvis du skal sikre dig at brugeren indtaster et tal kan du bruge isdigit(), den returnere true eller false...
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



IT-JOB