EOF

EOF (abreviatura de end-of-file, cap de fitxer en anglès) és un indicador o marca que no hi ha més informació que recuperar d'una font de dades. La font de dades pot ser un fitxer o flux de dades (stream). Conceptualment en cas d'un fitxer indica que es va arribar al final, en cas d'un stream és que es va finalitzar la transmissió o transferència de dades.

A nivell Sistema Operatiu

[modifica]

A nivell sistema operatiu, l'indicador de fi d'arxiu és dependent del sistema d'arxius on es trobi emmagatzemat el fitxer o el protocol de transmissió associat al stream. Per exemple, FAT 16 té com a indicador de fi d'arxiu el valor FFF8-FFFFh, un altre exemple pot ser el protocol FTP, en mode de transferència per flux (STREAM Mode) l'indicador de cap d'arxiu (o de flux) es representa per dos bytes, el primer són tots uns, i el segon byte és tots en zero excepte bit de posició 2 (en hexa 02h).

En Programació

[modifica]

En programació, EOF és un concepte per determinar la fi-d'arxiu. Molts llenguatges de programació tenen formes de detectar la finalitat-d'arxiu com a condicionant per a la lectura d'un flux de dades.

Alguns exemples:

/ * Exemple en C * /
/ * S'obre l'arxiu o stream i demas tasques ... * /
....
/ * Es procedeix a la lectura * /
while (! feof (& fd))
{
/ * Llegint fins que s'acabi * /
...
}

/ * Exemple en C++ * /
/ * S'obre l'arxiu o stream i demas tasques ... * /
....
/ * Es procedeix a la lectura * /
while (! fd.eof ())
{
/ * Llegint fins que s'acabi * /
...
}

El caràcter EOF existeix en la taula ASCII encara que no és aquest el caràcter que indica la fi-d'arxiu a la font de dades, ja que un fitxer no conté com a últim byte el caràcter EOF.

A la biblioteca estàndard de C, l'accés a un fitxer i altres funcions I/O poden retornar un valor igual al simbòlic EOF per indicar que la condició end-of-file s'ha complert. Ex:

/ * Exemple en C * /
/ * S'obre l'arxiu o stream i demas tasques ... * /
....
/ * Es procedeix a la lectura * /
while (! feof (& fd))
{
/ * Llegint fins que s'acabi * /
op_result = fread ((void *) buffer, sizeof (int), 1, & fd);
/ * Chequeamos el resultat de l'operació
if (op_result == EOF)
break;
/ * Es treballa amb el buffer * /
.....
}

La interpretació de C com a resultat de l'operació de lectura en cas de ser EOF és, en general, -1.

Shell i caràcters d'escapament

[modifica]

En UNIX es pot generar un EOF des del shell ( consola) teclejant Ctrl + D per indicar el EOF de dades ingressats per teclat, així com en Microsoft DOS i Windows es genera mitjançant la combinació Ctrl + Z.