Hvordan Avvis data som overløp Dimensjoner

Dataprogrammer blir ofte brukt til å utføre noen meningsfylt arbeid på data som er sendt til det som input. For eksempel kan et program være skrevet for å utføre beregninger i området på høyde og bredde dimensjoner. Siden så mange kan sendes til programmet, er det en mulighet for at en inngang er for stor til å bli behandlet. Dette resulterer i en overflyt, noe som fører til ødeleggelse av data. Du kan bruke et programmeringsspråk som C ++ til å avvise data som ville føre til en overflyt.

Bruksanvisning

1 Last inn C ++ IDE ved å klikke på programikonet. Når den åpnes, velger du "Fil / Ny / Project" og velg "C ++ Project" for å opprette en ny C ++ prosjekt. En kildekoden filen vises i teksteditor del av IDE. Denne filen inneholder en automatisk generert "main" -funksjonen, som fungerer som en inngangsport for programmet. Du vil plassere all koden i løpet av de klammeparenteser som vises rett under "main" -funksjonen.

2 Skriv følgende variabeldeklarasjoner mellom klammeparenteser i "main" -funksjonen. De første to variabler brukes til å fange inndata fra tastaturet. Variablene ' "lengde" og "width" hold dimensjoner i en datatype som kalles "short", som bare kan lagre verdier opp til 32767 før overfylte. Den siste variabelen brukes til å lagre det område av dimensjoner, og er av typen "lang". Denne datatypen kan lagre verdier opp til 2147483647, som er det dobbelte av maksimal mulig verdi når multiplisere to "shorts" sammen.

char * inputString;

char buffer[256];

kort lengde = 0;

kort width = 5;

langt område = 0;

3 Skriv en uttalelse som skriver ut retninger for brukeren å angi lengden dimensjon, som dette:

printf("Enter the length dimension:\n");

4 Skriv en uttalelse som fanger brukerens input fra tastaturet ved hjelp av variablene "inputString" og "buffer", som dette:

inputString = fgets(buffer, 256, stdin);

5 Skriv en "hvis" statement som tester for å se om verdien av brukerundersøkelser er større enn hva et kort er i stand til håndtering. Den maksimale verdien av et "kort" er lagret i den konstante "SHRT_MAX". Sjekk for å se om verdien er positiv, siden en overflowed verdien kan bli negativ og dimensjoner er vanligvis bare positive verdier. Følgende "hvis" statement sjekker for overløp og skriver ut en melding om overflow oppstår:

if(atoi(inputString) > SHRT_MAX && atoi(inputString) > 0)

{printf ( "data Avviste for overfylte dimensjon \ n");}

6 Skriv en "annet" statement som bare kjører når den foregående "hvis" statement evalueres som falske. Dette skjer når inngangsverdi er innenfor det riktige område av verdier for "korte" datatyper.

else

{}

7 Skriv to setninger som tildeler "inputString" til "lengde" variable og multipliserer det med bredden variabel. Plasser følgende to uttalelser i-mellom klammeparenteser som umiddelbart følger "annet" statement:

length = atoi(inputString);

areal = lengde x bredde;

8 Skriv en endelig uttalelse som skriver ut området. Plasser denne under uttalelser skrevet i det siste trinnet og i mellom klammeparenteser av "annet" statement:

printf("Area: %d", area);

9 Trykk på den grønne "Play" for å kjøre programmet. En ledeteksten vises med en tekstlinje som ber deg om å legge inn et nummer. Skriv inn 32768, som er ett høyere enn "SHRT_MAX", og følgende tekst sendes ut:

Data Avviste for overfylte dimensjon

Hint

  • SHRT_MAX er typisk 32 767, men det er ikke garantert. Det er mulig at "shorts" er i stand til å holde større tall på noen systemer. Dette programmet vil fortsatt fungere som tiltenkt, men du må kanskje legge inn et større antall for å få den "Data Avvist" melding hvis systemet har større "shorts" enn standard.