INTERFÍCIE D'ENTRADA/SORTIDALa biblioteca estàndard de C defineix l'estructura (struct) FILE a la capçalera stdio.h o en alguna de les que allà s'hi incloguin. No ens interessa conèixer l'estructura a fons, ens conformem a saber que els fitxers es tracten com a FILE * (apuntadors a FILE o streams) OBERTURA DE FITXERS El primer exemple el trobem al perfil de les funcions que serviran per a obrir fitxers:
fopen: Obre el fitxer nomfitxer i retorna una stream. Si per algun motiu no es pot obrir el fitxer, retornarà un apuntador NULL i la variable errno contindrà el tipus d'error que s'hagi produït. Pel que fa al mode, aquest pot ser: "r", "w", "a", "r+", "w+" o "a+", lletres que fan referència als verbs en anglès read, write i append. L'efecte dels diferents modes d'obertura queda representat a la següent taula:
Quan s'executa una funció main de C, disposem de 3 apuntadors a FILE:
Si, tal com fem a la línia de comandes, volguéssim canalitzar algun d'aquests apuntadors a un fitxer, podríem fer ús de la funció que expliquem tot seguit. freopen: Mira de tancar el fitxer associat a apfitx (hem triat aquest nom per apuntador a FILE, fitxer) i si pot obrir nomfitxer, li associa aquest mateix stream: apfitx. En cas contrari retornarà NULL i errno contindrà el codi d'error. ERRORS Abans de continuar, parlem dels errors que codifica la variable errno. Entre les estructures de biblioteca de C, es troba el vector char * sys_errlist[], que com es pot veure és un vector d'strings, de frases, que descriuen els errors que codifica errno. El nombre d'elements del vector, ve donat per la variable sys_nerr, que tal com errno és un enter. El següent programa mostraria els diversos missatges d'aquesta llista d'errors:
Tot i això, no és recomanable d'utilitzar aquestes estructures directament sinó mitjançant l'acció següent:
Si la invoquem, per exemple així: perror ("Un cert punt del programa")i suposant que errno està codificant l'error corresponent a que no es troba un determinat fitxer o directori:
El següent programa, que anomenaràs obrirfit.c, et permetrà practicar amb el que s'ha explicat fins ara. Abans de provar-lo, crea el fitxer /tmp/proves.txt Practica ara provocant errors: canvia el fitxer per un que no existeixi, intenta obrir fitxers sobre els quals no tinguis permís d'accés... Prova també diversos modes d'accés. Intenta també redirigir el canal d'error estàndard a un fitxer i comprova que has tingut èxit. |
Autor: Lluís València López
Aquesta obra està subjecta a una Llicència
de Creative Commons.