Anda di halaman 1dari 6

ARCHIVOS EN C++

El estándar de C contiene varias funciones para la edición de ficheros, estas están


definidas en la cabecera stdio.h y por lo general empiezan con la letra f, haciendo
referencia a file. Adicionalmente se agrega un tipo FILE, el cual se usará como
apuntador a la información del fichero. La secuencia que usaremos para realizar
operaciones será la siguiente:

 Crear un apuntador del tipo FILE *


 Abrir el archivo utilizando la función fopen y asignándole el resultado de la
llamada a nuestro apuntador.
 Hacer las diversas operaciones (lectura, escritura, etc).
 Cerrar el archivo utilizando la función fclose.

Funciones de Librería para la Entrada y Salida (E/S) de Archivos

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:

FILE *fopen(const char *filename, const char *modo);

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:

Para declarar una variable de tipo apuntador a archivo:

#include <stdlib.h>

FILE *fp;

Ejemplo de apertura de un archivo:


fp = fopen("datos.txt","w");

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:

int fflush(FILE *fp);

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 cerrar los archivos se utiliza la funcion fclose. Su prototipo es:

int fclose(FILE *fp);

Fclose retorna cero si fue exitosa y EOF si hubo alguna falla.

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:

int fprintf(FILE *fp, const char* format, ....);

fprintf retorna el número de caracteres que fueron escritos exitosamente o un número


negativo en caso de falla.

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:

int fscanf(FILE *stream, const char* format, ....);

Ejemplo

El siguiente programa abre un archivo que contiene un nombre y cedula de identidad.


Luego abre un archivo de salida y escribe estos datos (pero en orden invertido). El
archivo de entrada fue creado con un editor de texto.

Archivo de entrada: entrada.txt

Pedro 18878798

#include <stdio.h>
int main()
{
char ifilename[] = "entrada.txt";
char ofilename[] = "salida.txt";
char name[30];
int idNum;

FILE *ofp, *ifp; /* Declara apuntadores a archivo */


ifp = fopen(ifilename,"r"); /* Abre archivo de entrada */
fscanf(ifp,"%s %d",name,&idNum); /* Lee datos de entrada */
ofp = fopen(ofilename,"w"); /* Abre archivo de salida */
fprintf(ofp,"%d %s\n",idNum, name); /* Escribe los datos */
fclose(ifp); fclose(ofp); /* Cierra los archivos */
return 0;
}
Archivo de salida: salida.txt

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];

gotoxy(27,3);textcolor(10);cprintf("UNIVERSIDAD NACIONAL DE UCAYALI");


gotoxy(27,5);textcolor(10);cprintf("==============================");
gotoxy(28,6);textcolor(10);cprintf("============================");
gotoxy(14,8);textcolor(22);cprintf("FACULTAD DE INGENIERIA DE SISTEMAS Y DE
INGENIERIA CIVIL");
gotoxy(19,10);textcolor(22);cprintf("ESCUELA PROFESIONAL DE INGENIERIA DE
SISTEMAS");

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();
}

void leerclientes(int n, struct cliente x[]){


int i;
FILE*fbanco;
fbanco=fopen("c:\\datos.txt","ab");
if(fbanco==NULL)return;
for(i=1;i<=n;i++){
gotoxy(15,6);textcolor(3);cprintf("Crear numero de cuenta:");cin>>x[i].ncuenta;
gotoxy(15,8);textcolor(3);cprintf("Nombre:");cin>>x[i].nombre;
gotoxy(15,10);textcolor(3);cprintf("Apellido Paterno:");cin>>x[i].apellidop;
gotoxy(15,12);textcolor(3);cprintf("Apellido Materno:");cin>>x[i].apellidom;
gotoxy(15,14);textcolor(3);cprintf("N° DNI:");cin>>x[i].dni;
getch();
clrscr();
fwrite(&x[i],sizeof(struct cliente),1,fbanco);
}
fclose(fbanco);
gotoxy(30,12);textcolor(2);cprintf("Ud. ha sido Registrado");
clrscr();

void visualizar(struct cliente x[]){


FILE*fbanco;
cout<<endl<<"Listado: "<<endl;
fbanco=fopen("c:\\datos.txt","rb");
int i=0;
if(fbanco==NULL)return;
fread(&x[i],sizeof(struct cliente),1,fbanco);
while(!feof(fbanco))
{
gotoxy(15,6);textcolor(10);cprintf("LOS CLIENTES REGISTRADOS SON:");
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);
}

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);
}

void ventana(int x2,int y2,int x1,int y1)


{ int i;
gotoxy(x2,y2);printf("É");
gotoxy(x1,y1);printf("¼");
gotoxy(x1,y2);printf(" ");
gotoxy(x2,y1);printf("È");
for(i=x2+1;i<x1;i++)
{ gotoxy(i,y2);printf("Í");
gotoxy(i,y1);printf("Í");
}
for(i=y2+1;i<y1;i++)
{ gotoxy(x2,i);printf("º");
gotoxy(x1,i);printf("º");
}
gotoxy(x2+1,y2+1);printf("");
}

Anda mungkin juga menyukai