UD26 - Ficheros de texto - Departamento de Lenguajes y Sistemas

Anuncio
Unidad Didáctica 26
Ficheros de texto
Fundamentos de Programación
Departamento de Lenguajes y Sistemas Informáticos
Versión 1.0.0
Declaración de un fichero de texto
typedef FILE * Fichero;
Fichero variable_fichero;
Ejemplo:
#include <stdio.h>
typedef FILE * Fichero;
void main (void)
{
Fichero fcad;
Fichero fent;
…
UD26: Ficheros de texto
Apertura y cierre de un fichero de texto

Apertura
variable_fichero = fopen (nombre_fichero, modo)
Ejemplo:
f = fopen ("datos.txt", "r"); //lectura
f = fopen ("datos.txt", "w"); //escritura
f = fopen ("datos.txt", "r+"); //lectura-escritura

Cierre
fclose (f);
UD26: Ficheros de texto
Detección del final de un fichero de texto
feof (variable_fichero)
Ejemplo:
leer primer elemento del fichero
while (!feof(f))
{
tratar elemento
leer elemento siguiente
}
UD26: Ficheros de texto
Lectura y escritura de un fichero de texto
Lectura/Escritura de caracteres: fgetc, fputc
Lectura/Escritura de cadenas: fgets, fputs
Lectura/Escritura con formato: fscanf, fprintf
Diferencia entre gets/fgets y puts/fputs :
•
gets lee hasta encontrar un ‘\n’, que se lee
y se sustituye por un ‘\0’.
•
fgets añade el ‘\0’ detrás del ‘\n’, que se
conserva.
•
puts imprime un ‘\n’ detrás de la cadena y
fputs no.
UD26: Ficheros de texto
Lectura y escritura de un fichero de texto

Ejemplo
char c;
Cadena s;
int i;
Fichero fcar;
Fichero fcad;
Fichero fent;
Lectura de un carácter:
c = fgetc (fcar);
Lectura de una cadena:
fgets (s, MAXCAR, fcad)
Lectura de un número entero:
fscanf (fent, "%d", &i);
UD26: Ficheros de texto
Recorrido de un fichero de texto
#include <stdio.h>
typedef FILE * Fichero;
…
{
leer r de f
while (!feof(f))
{
tratamiento de r
leer r de f
}
fclose (f);
void main (void)
{
T r;
Fichero f;
f = fopen (nombre_fichero, "r");
if (f == NULL)
puts ("\nError en la apertura del fichero");
else
…
UD26: Ficheros de texto
}
}
Recorrido de un fichero de texto

Ejemplo 1
#include <stdio.h>
typedef FILE * Fichero;
…
{
c = fgetc (f);
while (!feof(f))
{
putchar (c);
c = fgetc (f);
}
fclose (f);
void main (void)
{
char c;
Fichero f;
f = fopen ("datos.txt", "r");
if (f == NULL)
puts ("\nError en la apertura del fichero");
else
…
UD26: Ficheros de texto
}
}
Recorrido de un fichero de texto

Ejemplo 2
fechas.h
#ifndef FECHAS_H_INCLUDED
#define FECHAS_H_INCLUDED
#include<stdio.h>
#define TAM 25
#define TAMCAD 256
typedef struct
{
int dia;
int mes;
int anyo;
} Fecha;
typedef Fecha ArrayFechas[TAM];
typedef char Cadena[TAMCAD];
void leeArrayFechas(const Cadena, int *, ArrayFechas);
#endif
UD26: Ficheros de texto
Recorrido de un fichero de texto

Ejemplo 2
#include "fechas.h”
void leeArrayFechas(const Cadena nombrefich,
int * arrayLength, ArrayFechas array)
{
int i=0;
FILE * f;
f=fopen(nombrefich,"r");
if (f==NULL)
{
printf("fichero %s no encontrado",nombrefich);
*arrayLength=0;
}
…
UD26: Ficheros de texto
Recorrido de un fichero de texto

Ejemplo 2
…
else
{
fscanf(f,"%d%d%d",&(array[i].dia), &(array[i].mes),&(array[i].anyo));
while (!feof(f) && i<TAM)
{
i++;
fscanf(f,"%d%d%d",&(array[i].dia), &(array[i].mes),&(array[i].anyo));
}
*arrayLength=i;
fclose(f);
}
}
UD26: Ficheros de texto
Descargar