Existen rutinas para abrir y cerrar archivos, y para leer y escribir en ellos utilizando
datos formateados, de manera similar a como se hace el formato de datos para
entrada y salida en pantalla.
La función fopen se utiliza para abrir un archivo, y asociarle una variable apuntador a
archivo con la cual el programa puede referirse a la fuente del archivo. El prototipo de
fopen es:
fopen retorna un apuntador al archivo si la llamada fue exitosa, y sino, retorna NULL.
El apuntador al archivo se utiliza para identificar la fuente del mismo, se pasa como
parámetro a las rutinas de escritura, lectura y manejo del archivo. El filename y modo
son cadenas de caracteres. Los modos válidos son:
#include <stdlib.h>
FILE *fp;
La funcion fflush se usa para físicamente escribir (bajar) en el archivo cualquier data
almacenada en el "buffer" intermedio. Para hacer los programas mas eficientes y
reducir las llamadas al sistema, los archivos mantienen un buffer (memoria)
intermedia, una vez que el buffer esta lleno, los datos se escriben en el archivo. La
rutina fflush fuerza a que el buffer sea escrito en el archivo asociado. Su prototipo es:
Recibe un apuntador a archivo como parámetro. Retorna cero si la llamada fue exitosa
y EOF si no lo fue. EOF es una constante especial que denota que se ha llegado al final
del archivo.
Para escribir datos en un archivo se utiliza la fprintf. Esta función es muy similar a
printf, que ya sabemos manejar bien. La única diferencia es que fprintf tiene un
argumento adicional, el apuntador a archivo que especifica la fuente donde queremos
escribir. Su prototipo es:
Para leer datos de un archivo se utiliza la función fscanf. Esta función es muy similar a
scanf, que ya sabemos manejar bien. La única diferencia es que fscanf tiene un
argumento adicional, el apuntador a archivo que especifica la fuente de donde
queremos leer. Recuerden que los argumentos para guardar datos deben ser
apuntadores (i.e, llevan & en caso de ser variables simples, y solo el nombre en caso
de ser arreglos de caracteres). Su prototipo es:
Ejemplo
Pedro 18878798
#include <stdio.h>
int main()
{
char ifilename[] = "entrada.txt";
char ofilename[] = "salida.txt";
char name[30];
int idNum;
18878798 Pedro
Ejercicio de Practica
#include<iostream.h>
#include<conio.h> //textcolor, cprintf , gotoxy
#include<stdlib.h> //exit(0);
#include<stdio.h>
#define lim 100
struct cliente{
char ncuenta[lim];
char nombre[lim];
char apellidop[lim];
char apellidom[lim];
char dni[8];
};
//funciones
void ventana(int x2,int y2,int x1,int y1);
void leerclientes(int,struct cliente[]);
void visualizar(struct cliente[]);
void busqueda(struct cliente[]);
void main(){
int op,n;
struct cliente cli[lim];
getch();
clrscr();
ventana(26,11,52,13);
gotoxy(34,12);textcolor(25);cprintf("BIENVENIDOS");
getch();
clrscr();
ventana(26,11,52,13);
gotoxy(33,12);textcolor(19);cprintf("PROYECTO FINAL");
getch();
clrscr();
men:
ventana(26,2,52,4);
ventana(20,6,58,18);
gotoxy(34,3);textcolor(5);cprintf("OPCIONES:");
gotoxy(25,9);textcolor(3);cprintf("*CREAR CLIENTES [1]:");
gotoxy(25,11);textcolor(3);cprintf("*LISTA DE CLIENTES [2]:");
gotoxy(25,13);textcolor(3);cprintf("*BUSCAR CLIENTES [3]:");
gotoxy(25,15);textcolor(3);cprintf("*SALIR [4]:");
gotoxy(25,17);textcolor(2);cprintf("INGRESE OPCION...");cin>>op;
clrscr();
switch(op)
{
case 1:
gotoxy(12,8);textcolor(5);cprintf("Ingrese la cantidad de cuentas: ");
cin>>n;
clrscr();
leerclientes(n,cli);
goto men;
break;
case 2:
visualizar(cli);
getch();
clrscr();
goto men;
break;
case 3:
busqueda(cli);
getch();
clrscr();
goto men;
break;
case 4:
exit(0);
break;
}getch();
}
fclose(fbanco);
getch();
}
void busqueda(struct cliente x[]){
char respt[20];
gotoxy(15,6);textcolor(10);cprintf("Ingrese el nombre: "); cin>>respt;
clrscr();
FILE*fbanco;
fbanco=fopen("c:\\datos.txt","rb");
int i=0,constante=0;
if(fbanco==NULL)return;
fread(&x[i],sizeof(struct cliente),1,fbanco);
while(!feof(fbanco))
{ if(strcmp(x[i].nombre,respt)==0)
{constante=1;
gotoxy(15,6);textcolor(10);cprintf("EL CLIENTES BUSCADO ES :");
gotoxy(5,8);textcolor(11);cprintf("N° DE CUENTA");
gotoxy(20,8);textcolor(11);cprintf("NOMBRE");
gotoxy(37,8);textcolor(11);cprintf("APELLIDOS");
gotoxy(49,8);textcolor(11);cprintf("DNI");
cout<<endl;
gotoxy(5,i+9);cout<<x[i].ncuenta;
gotoxy(20,i+9);cout<<x[i].nombre;
gotoxy(37,i+9);cout<<x[i].apellidop;
gotoxy(49,i+9);cout<<x[i].dni;
}
i++;
fread(&x[i],sizeof(struct cliente),1,fbanco);
}
if(constante==0) {cout<<"ERROR NO HAY DATOS CON ESE NOMBRE";}
fclose(fbanco);
}