morgan_kane Skrevet 2. desember 2011 Skrevet 2. desember 2011 (endret) Hei, jeg lager et matteprogram i c, men getchar gir meg asciiverdien til tallet som blir tastet inn. Hvordan kan jeg gjøre det om til datatall før det puttes inn i en formel? Eks: x=getchar(); //tastet tall=3 printf("51",x) Endret 2. desember 2011 av morgan_kane
Gjest Slettet-Pqy3rC Skrevet 2. desember 2011 Skrevet 2. desember 2011 (endret) atoi() (om du bare trenger ett enkelt tegn/tall er det jo bare å x-48) Endret 2. desember 2011 av Slettet-Pqy3rC
morgan_kane Skrevet 2. desember 2011 Forfatter Skrevet 2. desember 2011 atoi() (om du bare trenger ett enkelt tegn/tall er det jo bare å x-48) Så da skriv eg x=atoi(x)?
☀ ❄ Skrevet 2. desember 2011 Skrevet 2. desember 2011 (endret) atoi() (om du bare trenger ett enkelt tegn/tall er det jo bare å x-48) Så da skriv eg x=atoi(x)? Nesten. #include <stdlib.h> // ... const char *c = "42"; int number = atoi(c); Å bruke x-48 er i teorien ikke plattformuavhengig. Edit: Fikset idiotisk feil i kodesnutten. Endret 3. desember 2011 av Lstor
LostOblivion Skrevet 3. desember 2011 Skrevet 3. desember 2011 Hvis du har tenkt til å bruke dette til matte, foreslår jeg python.
morgan_kane Skrevet 3. desember 2011 Forfatter Skrevet 3. desember 2011 Hvis du har tenkt til å bruke dette til matte, foreslår jeg python. Ingen vits i å lære seg to programeringspråk når man bare bruker C på den linja jeg går
GeirGrusom Skrevet 3. desember 2011 Skrevet 3. desember 2011 Ellers er også tallverdien til en char (dersom den er mellom 0 og 9) = tegn - '0'.
zotbar1234 Skrevet 3. desember 2011 Skrevet 3. desember 2011 (endret) Nesten. #include <stdlib.h> // ... char c = // ... whatever ... int number = atoi(c); Unnskyld, men hvordan skulle denne virke, mtp atoi() tar en const char pointer? Å bruke x-48 er i teorien ikke plattformuavhengig. Sifferverdien for hvert enkelt tegn kan hentes platformuavhengig som x - '0'. Til OP: inputhåndtering i C er ganske pes. Standardrådet for å gjøre inputvalidering+konvertering i C består gjerne av følgende steg: 1. Lese inn brukerinput i et fast buffer (man kan utvide dette punktet til å takle en vilkårlig størrelse, men for tall er ikke det spesielt interessant for leketøyseksemplene). fgets() er en start. 2. Om #1 var vellykket, tolker man data fra bufferet. Hvis ikke, rapporterer man feil, kaster bufferet og evt. spør om input på nytt. Her er det nyttig med ferror() og slikt. 3. Tolkningen kan foregå på mange måter. Siden du har en relativt veldefinert oppgave, kan man bruke atoi(), strtol() eller sin egen parser for tall som måtte støtte det formatet du måtte ønske. strtol() er dog helt klart anbefalt. Du får gratis feilsjekking og støtte for alle grunntall mellom 2 og 35. Ganske kjekt. Endret 3. desember 2011 av zotbar1234
☀ ❄ Skrevet 3. desember 2011 Skrevet 3. desember 2011 (endret) ... Unnskyld, men hvordan skulle denne virke, mtp atoi() tar en const char pointer? Du har selvfølgelig helt rett, gitt litt veldig fort i svingene der. Takk for rettelsen! Fikser kodesnutten i posten min nå. Endret 3. desember 2011 av Lstor
LostOblivion Skrevet 4. desember 2011 Skrevet 4. desember 2011 (endret) Hvilken linje/skole går du på? Endret 4. desember 2011 av LostOblivion
LonelyMan Skrevet 9. desember 2011 Skrevet 9. desember 2011 (endret) Konvertere ascii tall til integer tall så utfører du den logiske AND operasjonen med 0Fh som konstant: AsciiTall AND 0Fh.. Dette beholder kun de 4 laveste bitene og sletter de øvrige og dermed har du tallet ditt. Det avhenger selvfølgelig at det er ett siffer i det. Endret 9. desember 2011 av LonelyMan
ze5400 Skrevet 14. desember 2011 Skrevet 14. desember 2011 atoi() og itoa() er da vitterlig Microsoft-spesifikke funksjoner. Om man bruker sprintf blir det riktignok litt mer knot, men til gjengjeld kryssplattform. Gjør man operasjonen mye er det jo bare å kaste det i en funsksjon uansett.
Gjest Slettet-Pqy3rC Skrevet 14. desember 2011 Skrevet 14. desember 2011 (endret) atoi() er definert i stdlib.h (sammen med atol(), atof() etc), mens itoa() vel er MS stuff (som kan erstattes med printf()). Endret 14. desember 2011 av Slettet-Pqy3rC
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå