Diapositiva 1

Anuncio
Repaso de archivos
#include <stdio.h>
int main(void)
{
FILE *fp;
fp=fopen(“prueba.txt”, “w”);
if (fp==NULL) {
printf(“Error al abrir el archivo\n”);
printf(“No lo uso, no lo cierro\n”);
} else {
/*** todo el código viene aquí ***/
fclose(fp);
}
}
Repaso de archivos
#include <stdio.h>
int main(void)
{
FILE *fp;
único include que hace falta
fp=fopen(“prueba.txt”, “w”);
if (fp==NULL) {
printf(“Error al abrir el archivo\n”);
printf(“No lo uso, no lo cierro\n”);
} else {
/*** todo el código viene aquí ***/
fclose(fp);
}
}
Repaso de archivos
#include <stdio.h>
int main(void)
{
FILE *fp;
única variable especial
fp=fopen(“prueba.txt”, “w”);
if (fp==NULL) {
printf(“Error al abrir el archivo\n”);
printf(“No lo uso, no lo cierro\n”);
} else {
/*** todo el código viene aquí ***/
fclose(fp);
}
}
Repaso de archivos
#include <stdio.h>
int main(void)
{
FILE *fp;
fp=fopen(“prueba.txt”, “w”);
if (fp==NULL) {
printf(“Error al abrir el archivo\n”);
printf(“No lo uso, no lo cierro\n”);
} else {
/*** todo el código viene aquí ***/
fclose(fp);
}
}
Tipo de acceso
r lectura, debe existir
w escritura, lo crea nuevo
r+ igual que lectura, pero además permite escribir
w+ igual que escritura, pero además permite leer
Repaso de archivos
#include <stdio.h>
int main(void)
{
FILE *fp;
fp=fopen(“prueba.txt”, “w”);
if (fp==NULL) {
printf(“Error al abrir el archivo\n”);
printf(“No lo uso, no lo cierro\n”);
} else {
/*** todo el código viene aquí ***/
fclose(fp);
}
}
La misma estructura que
asignación dinámica de memoria.
fopen ≈ calloc
fclose ≈ free
Repaso de archivos
#include <stdio.h>
int main(void)
{
FILE *fp;
único include que hace falta
única variable especial
fp=fopen(“prueba.txt”, “w”);
if (fp==NULL) {
printf(“Error al abrir el archivo\n”);
printf(“No lo uso, no lo cierro\n”);
} else {
/*** todo el código viene aquí ***/
fclose(fp);
}
}
La misma estructura que
asignación dinámica de memoria.
fopen ≈ calloc
fclose ≈ free
Tipo de acceso
r lectura, debe existir
w escritura, lo crea nuevo
r+ igual que lectura, pero además permite escribir
w+ igual que escritura, pero además permite leer
Archivos de Texto
int a;
float x;
char txt[N_txt];
char *pc; /* control de lectura para fgets */
int ctrl; /* control de lectura para fscanf */
Funciones de escritura
fprintf(fp,”%7d %13.4f %-10s\n”,a,x,txt);
fputs(txt,fp);
Funciones de lectura
ctrl=fscanf(fp,”%d%f%s”,&a,&x,txt);
pc=fgets(txt,N_txt,fp);
Error si ctrl != 3
Error si pc == NULL
Archivos binarios
t_persona p; /* una persona */
Función de escritura
fwrite(&p,sizeof(p),1,fp);
Función de lectura
ctrl=fread(&p,sizeof(p),1,fp);
Error si ctrl != 1
Función de desplazamiento (para acceso directo)
fseek(fp,j*sizeof(p),SEEK_SET);
Se desplaza a la posición j del archivo.
Equivale a vec[j] en vectores.
Funciones auxiliares
Acceso caracter a caracter
int ch;
fputc(ch,fp);
fprintf(fp,”%c”,ch);
ch=fgetc(fp);
No puede dar error, sólo si llega al final del archivo.
Ha llegado al final si ch == EOF
Volver al principio del archivo (texto o binario)
rewind(fp);
fseek(fp,0,SEEK_SET);
Final de archivo (control peligroso)
ctrl=feof(fp);
ctrl != 0 si se ha sobrepasado el final del archivo
Descargar