Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial
  • Lezione 41 di 47
  • livello principiante
Indice lezioni

Messaggi di Errore ed esempi pratici

La gestione degli errori nel linguaggio C ed esempi pratici di input output
La gestione degli errori nel linguaggio C ed esempi pratici di input output
Link copiato negli appunti

Un'altra importante caratteristica del C, è che dispone di una serie di strumenti per riportare, al programmatore, gli errori commessi durante lo sviluppo. Quando si prende dimestichezza con la programmazione si apprezza l'importanza di avere degli strumenti per il debug, poiché buona parte dello sviluppo di un programma risiede proprio nella correzione degli errori; per poter utilizzare queste funzione è bene includere, oltre alla <stdio.h>, anche le librerie <stdlib.h> e <errno.h>.

Tra le funzioni più utilizzate per rilevare e gestire gli errori generati a runtime c'è perror(), usata in combinazione con errno. La sintassi della funzione è la seguente:

void perror(const char *messaggio);

La perror() produce un messaggio a video descrivendo l'ultimo errore riscontrato durante una chiamata ad una funzione di sistema o di libreria. Il messaggio che viene stampato dipende dal valore contenuto nella variabile Errno. In sostanza perror() traduce il codice in un messaggio comprensibile all'uomo.

Errno è una variabile di sistema speciale che viene impostata se una chiamata di sistema non viene eseguita correttamente e contiene un codice che corrisponde all'errore che si è verificato e che non ha consentito la corretta esecuzione della chiamata. Perché possa essere usata in un programma deve essere dichiarata come segue:

extern int errno;

Possiamo azzerarla o assegnarle i valore che vogliamo, altrimenti ritorna l'ultimo valore ritornato da una funzione di sistema o di libreria.

La funzione exit(), invece, si presenta con la seguente struttura:

void exit(int stato);

e serve essenzialmente per terminare l'esecuzione di un programma e ritornare il valore "stato" al sistema operativo, che può assumere essenzialmente questi due valori:

  • EXIT_SUCCESS - nel caso in cui il programma termini senza problemi;
  • EXIT_FAILURE - nel caso in cui il programma termini con errori.

ESEMPIO PRATICO
(Visualizza il sorgente completo)

Il programma utilizza le funzioni di lettura e scrittura su file per leggere e salvare il file "rubrica.txt". La particolarità del programma è che salva in formato CSV (Comma Separated Value), formato che permette a programmi di posta come Outlook o Mozilla di importare i dati senza problemi.

LETTURA

472       FILE *stream = fopen("rubrica.txt","rt");
[...]
475       while(fgets(linea, 500, stream) != NULL)
[...]
510       fflush(stream);
511       fclose(stream);

 

SCRITTURA

525       FILE *stream = fopen("rubrica.txt","w");
[...]
532         fprintf(stream, "%s,%s,%s,%s,%sn", p->inf.nome, p->inf.cognome, p->inf.telefono, p->inf.email, p->inf.sitoweb);
[...]
539       fflush(stream);
540       fclose(stream);

 

Nota particolare va a "getchar", utilizzata per scrivere una funzioncina che permette all'utente di leggere i dati una schermata per volta; grazie a getchar si può continuare l'esecuzione premendo invio.

573     void pausa()
574     { // pausa() - OPEN
575
576       char invio;
577       printf("nn - premi INVIO per continuare -n");
578       invio = getchar();
579       return;
580
581     } // pausa() - CLOSE

Ti consigliamo anche