Documente online.
Zona de administrare documente. Fisierele tale
Am uitat parola x Creaza cont nou
 HomeExploreaza
upload
Upload




Tratarea erorilor

c


Tratarea erorilor

Nume

perror - afiseaza un mesaj de eroare sistem



Declaratie

void perror(const char *s);

#include <errno.h>

const char *sys_errlist[];

int sys_nerr;

Descriere

Rutina perror afiseaza un mesaj la iesirea standard de eroare, care descrie ultima eroare intilnita la ultimul apel 323g63d sistem sau functie de biblioteca. Mai intii se afiseaza argumentul s, apoi virgula si blanc, si in final mesajul de eroare si new-line. Se recomanda (mai ales pentru depanare) ca argumentul s sa includa numele functiei in care a aparut eroarea. Codul erorii se ia din variabila externa errno

Lista globala de erori sys_errlist[] indexata cu errno poate fi folosita pentru a obtine mesajul de eroare fara new-line. Ultimul indice de mesaj din lista este sys_nerr-1. Se recomanda o atentie deosebita in cazul accesului direct la lista deoarece unele coduri noi de eroare pot lipsi din sys_errlist[]

Daca un apel sistem esueaza variabila errno indica codul erorii. Aceste valori pot fi gasite in <errno.h>. Functia perror serveste la afisarea acestui cod de eroare intr-o forma lizibila. Daca un apel terminat cu eroare nu este imediat urmat de un apel perror, valoarea variabilei errno se poate pierde daca nu e salvata.

Nume

clearerr feof ferror - verifica si reseteaza starea

fluxului

Declaratie

void clearerr(FILE *flux);

int feof(FILE *flux);

int ferror(FILE *flux);

int fileno( FILE *flux);

Descriere

Functia clearerr sterge indicatorii de sfirsit de fisier si eroare ai fluxului.

Functia feof testeaza indicatorul de sfirsit de fisier al fluxului, si returneaza non-zero daca este setat. Acesta este setat daca o operatie de citire a detectat sfirsitul de fisier.

Functia ferror testeaza indicatorul de eroare al fluxului, si returneaza non-zero daca este setat. Acesta este setat daca o operatie de citire sau scriere a detectat o eroare (datorata de exemplu hardware-ului).

Functiile de citire (cu sau fara format) nu fac distinctie intre sfirsit de fisier si eroare, astfel ca trebuie apelate functiile feof si ferror pentru a determina cauza.

Functia fileno examineaza argumentul flux si returneaza descriptorul asociat de sistemul de operare acestui flux.

Atentie! Este foarte frecventa folosirea incorecta a functiei feof pentru a testa daca s-a ajuns la sfirsitul fisierului. Nu se recomanda in nici un caz acest stil de programare:

#define LSIR 80

char lin[LSIR];

FILE *fi,*fo;

fi=fopen(nume-fisier-intrare,'rt');

fo=fopen(nume-fisier-iesire,'wt');

while (!feof(fi))

fclose(fi); fclose(fo);

In aceasta secventa, daca si ultima linie a fisierului text de intrare este terminata cu new-line, aceasta va fi scrisa de doua ori in fisierul de iesire. De ce? Dupa ce se citeste ultima linie inca nu este pozitionat indicatorul de sfirsit de fisier, deci functia fgets returneaza succes. La reluarea ciclului se incearca un nou fgets si abia acum se depisteaza sfirsitul de fisier, fapt marcat in zona rezervata fluxului fi. Astfel continutul tabloului lin ramine nemodificat si este scris a doua oara in fisierul de iesire. Abia la o noua reluare a ciclului functia feof ne spune ca s-a depistat sfirsitul de fisier.

In acest manual sint prezentate mai multe programe care efectueaza diferite prelucrari asupra unor fisiere text. Pentru simplitate toate programele presupun ca nu apar erori la citire sau la scriere.



Document Info


Accesari: 450
Apreciat: hand-up

Comenteaza documentul:

Nu esti inregistrat
Trebuie sa fii utilizator inregistrat pentru a putea comenta


Creaza cont nou

A fost util?

Daca documentul a fost util si crezi ca merita
sa adaugi un link catre el la tine in site


in pagina web a site-ului tau.




eCoduri.com - coduri postale, contabile, CAEN sau bancare

Politica de confidentialitate | Termenii si conditii de utilizare




Copyright © Contact (SCRIGROUP Int. 2024 )