nybörjarproblem med struct

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Muppis
Inlägg: 275
Blev medlem: 15 februari 2007, 10:26:28
Ort: Halmstad

Re: nybörjarproblem med struct

Inlägg 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.
Nerre
Inlägg: 27237
Blev medlem: 19 maj 2008, 07:51:04
Ort: Upplands väsby

Re: nybörjarproblem med struct

Inlägg 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.)
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: nybörjarproblem med struct

Inlägg 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.
Nerre
Inlägg: 27237
Blev medlem: 19 maj 2008, 07:51:04
Ort: Upplands väsby

Re: nybörjarproblem med struct

Inlägg 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.
Skriv svar