Come rifiutare i dati che inonderanno il Dimensioni

January 13

I programmi per computer sono spesso utilizzati per svolgere un lavoro significativo sui dati che viene inviato ad esso come input. Per esempio, un programma può essere scritto per eseguire calcoli dell'area su altezza e larghezza dimensioni. Poiché ogni numero può essere presentato al programma, vi è la possibilità che un ingresso è troppo grande per essere elaborato. Ciò si traduce in un overflow, che provoca il danneggiamento dei dati. È possibile utilizzare un linguaggio di programmazione come C ++ a respingere i dati che potrebbero causare una condizione di overflow.

istruzione

1 Caricare il C ++ IDE facendo clic sulla sua icona del programma. Quando si apre, selezionare "File / Nuovo / Progetto" e scegliere "Progetto ++ C" per creare un nuovo progetto C ++. Un file di codice sorgente compare nella parte di editor di testo dell'IDE. Questo file contiene una funzione generata automaticamente "principale", che funge da punto di ingresso per il programma. Potrai inserire tutto il codice all'interno delle parentesi graffe che appaiono immediatamente sotto la funzione "principale".

2 Scrivere le seguenti dichiarazioni di variabile tra le parentesi graffe della funzione "principale". Le prime due variabili sono usate per acquisire l'input dalla tastiera. Le variabili ' "lunghezza" e "width" dimensioni della stretta in un tipo di dati denominato "corto", che può solo valori di memorizzare fino a 32.767 prima di traboccare. La variabile finale viene utilizzata per memorizzare l'area delle dimensioni, ed è di tipo "lungo". Questo tipo di dati in grado di memorizzare valori fino a 2,147,483,647, che è il doppio del valore massimo possibile quando si moltiplicano due "corti" insieme.

char * inputString;

char buffer[256];

breve lunghezza = 0;

breve width = 5;

lunga area = 0;

3 Scrivere una dichiarazione che stampa le indicazioni per l'utente di inserire la dimensione di lunghezza, in questo modo:

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

4 Scrivere una dichiarazione che cattura l'input dell'utente dalla tastiera utilizzando le variabili "InputString" e "buffer", in questo modo:

inputString = fgets(buffer, 256, stdin);

5 Scrivere una dichiarazione "se" che mette alla prova per vedere se il valore l'input dell'utente è più grande di quello che un corto è in grado di gestire. Il valore massimo di un "corto" è memorizzato nella costante "SHRT_MAX." Verificare se il valore è positivo, dal momento che un valore in overflow può diventare negativa e le dimensioni sono in genere solo valori positivi. I seguenti "se" assegni economico del troppo pieno e stampa un messaggio se si verifica un overflow:

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

{printf ( "Dati rifiutato per traboccante dimensione \ n");}

6 Scrivere una dichiarazione "altro" che viene eseguito solo se il precedente "if" valutata come falsa. Ciò si verifica quando l'ingresso valore rientra il diritto intervallo di valori per i tipi di dati "corte".

else

{}

7 Scrivere due istruzioni che assegnano il "inputString" alla variabile "lunghezza" e moltiplica con la variabile larghezza. Posizionare le due istruzioni in-tra le parentesi graffe che seguono immediatamente la dichiarazione "altro":

length = atoi(inputString);

zona width = lunghezza *;

8 Scrivere una dichiarazione finale che stampa l'area. Inserire questo sotto le dichiarazioni scritte nell'ultimo passaggio e in-tra le parentesi graffe della dichiarazione "altro":

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

9 Premere il tasto verde "Play" per eseguire il programma. Un prompt dei comandi appare con una riga di testo che chiede di inserire un numero. Entra in 32.768, che è uno superiore "SHRT_MAX," e il seguente testo viene emesso:

I dati respinto per dimensione straripamento

Consigli e avvertenze

  • SHRT_MAX è tipicamente 32.767, ma che non è garantita. E 'possibile che "corti" sono in grado di contenere grandi numeri in alcuni sistemi. Questo programma continuerà a funzionare come previsto, ma potrebbe essere necessario inserire un numero più grande per ottenere il messaggio "Data Rejected" se il sistema dispone "corti" più grandi rispetto allo standard.