Sida 3 av 3
Re: nybörjarproblem med struct
Postat: 18 september 2011, 07:10:53
av Muppis
ctype.h innehåller massor med trevliga funktioner.
Kod: Markera allt
digittoint, isalnum, isalpha, isascii, isblank, iscntrl, isdigit,
isgraph, ishexnumber, isideogram, islower, isnumber, isphonogram,
isprint, ispunct, isrune, isspace, isspecial, isupper, isxdigit, toascii,
tolower, toupper -- character classification macros
isdigit() bör vara högaktuell, förutsatt att man läser in tecknen en och en med tex getc() eller liknande.
Re: nybörjarproblem med struct
Postat: 18 september 2011, 09:10:58
av Nerre
Inmatningsfunktioner som snyggt hanterar felaktiga data är oftast ett kapitel för sig.
Det vettigate brukar vara att läsa in det hela som en sträng och sen göra nån form av kontroll av vad strängen innehåller och om innehållet (korrekt) kan konverteras till ett tal. (Man kan t.ex. konvertera strängen till ett tal, konvertera tillbaka talet till en sträng och jämföra med den första strängen. Fast det finns nog snyggare sätt.)
Re: nybörjarproblem med struct
Postat: 18 september 2011, 14:03:18
av sodjan
> isdigit() bör vara högaktuell,
Eller kanske isnumber, om man nu faktiskt har ett "tal"...

Isdigit kan väl användas i en loop över en sträng, men jag vet
inte hur t.ex "133.45" hanteras, d.v.s hur tolkas "." ?
Isnumber borde kunna hantera alla giltiga numeriska format.
Re: nybörjarproblem med struct
Postat: 18 september 2011, 15:03:04
av Nerre
Jo, problemet blir ju större ju större omfång man har på vad som är tillåtet.
En siffra är ju relativt enkelt. Heltal går väl hyffsat också. Men hur tar man hand om tal som "12.34,-6"? Det går inte bara att kolla efter vilka tecken som är tillåtna. Och det finns säkerligen strängar som kan tolkas som flera olika tal beroende på hur man tolkar. Är "12,345" tolvtusentrehundrafyrtiofem eller tolv komma tre fyra fem? Beror ju på om man är amerikan eller inte... Så att programmet tolkar det man matat in som ett tal räcker inte alltid, för användaren kanske menade ett annat tal.