Programación General > C/C++
Como Usar Fread() Y Fwrite() Usando Pilas ?
dreadlock:
Perdon borre esto por que descubri el "modificar"
dreadlock:
Pues creo que te entendi tu quieres que se guarde el contenido de una lista a un archivo. Como hay dos tipos de listas enlazadas(simplemente enlazadas y doblemente enlazadas), yo te pongo la que ocupa fread, y fwrite, esque la de doblemente enlazada en mi version personal lee bitexbite.
--- Código: Text --- //Natty Dread Lock//lista simplemente enlazada#include<stdio.h>#include<string.h>#include<conio.h>#include<ctype.h>#include<dos.h>#include<stdlib.h>#include<a:portada.h># define MAX 6int i;int borrando=0;void intro_ficha(void);void lista_ficha(void);void muestra_ficha(void);void borra_ficha(void);void almacena_datos(void);void lee_datos(void);void asigna_memoria(void);void visu_ficha(struct agenda*);////////////////////////struct agenda *display_ficha(char *n);struct agenda *busca(char *inbuf);struct agenda *primero,*nuevo,*indice;//////////////////////////////////struct agenda{char nombre[30];char direccion[50];char telefono [10];struct agenda *siguiente;//apunta al siguiente elemento de la lista};//////////////////////////////////void asigna_memoria(){nuevo=(struct agenda*)malloc(sizeof(struct agenda));if(nuevo==NULL){gotoxy(2,13);printf("Espacio de memoria insuficiente");getche();for(i=2;i<=79;i++){gotoxy(i,13);printf(" ");}return;}if(primero==(struct agenda*)NULL)primero=indice=nuevo;else{indice=primero;while(indice->siguiente!=(struct agenda*)NULL)indice=indice->siguiente;indice->siguiente=nuevo;indice=nuevo;}}/////////////////////////////////////////////////////void intro_ficha(){asigna_memoria();for(i=2;i<=79;i++){gotoxy(i,13);printf(" ");}gotoxy((80-19)/2,13);printf("Agregando Datos!!!!");gotoxy(5,16);printf("Nombre: ");fflush(stdin);gets(indice->nombre);gotoxy(5,17);printf("Direccion: ");fflush(stdin);gets(indice->direccion);gotoxy(5,18);printf("Telefono: ");fflush(stdin);gets(indice->telefono);indice->siguiente=(struct agenda*)NULL;}/////////////////////////////////////////void lista_ficha(void){if(primero==(struct agenda*)NULL){for(i=2;i<=79;i++){gotoxy(i,13);printf(" ");}gotoxy((80-15)/2,13);printf("Lista vacia!!!!");getche();//retener mensajereturn;}indice=primero;do{visu_ficha(indice);indice=indice->siguiente;}while(indice!=(struct agenda*)NULL);}////////////////////////////////////////////////void muestra_ficha(void){char inbuf[30];for(i=2;i<=79;i++){gotoxy(i,13);printf(" ");}gotoxy(5,13);printf("Mostrar la ficha con Nombre: ");fflush(stdin);gets(inbuf);display_ficha(inbuf);}/////////////////////////////////////////////////////void visu_ficha(struct agenda *visu){for(i=2;i<=79;i++){gotoxy(i,13);printf(" ");gotoxy(i,16);printf(" ");gotoxy(i,17);printf(" ");gotoxy(i,18);printf(" ");}gotoxy(30,13);printf("Mostrando datos!!!!");gotoxy(5,16);printf("Nombre: %s",visu->nombre);gotoxy(5,17);printf("Direccion: %s",visu->direccion);gotoxy(5,18);printf("Telefono: %s",visu->telefono);if(borrando==0){hori(22);gotoxy(26,23);printf("Presiona CUALQUIER tecla para continuar");getche();}}////////////////////////////////////////////////void borra_ficha(){struct agenda *borra;char inbuf[30];for(i=2;i<=79;i++){gotoxy(i,13);printf(" ");}gotoxy(5,13);printf("Borra la ficha con el nombre: ");fflush(stdin);gets(inbuf);borra= ((struct agenda*)display_ficha(inbuf));if(borra==(struct agenda*)NULL)return;for(i=2;i<=79;i++){gotoxy(i,13);printf(" ");}gotoxy(5,13);printf("Deseas borrar esta ficha? s/n: ");switch(toupper(getche())){case 'N':return;case 'S':break;}if(borra==primero)primero=primero->siguiente;else{indice=primero;while(indice->siguiente!=borra)indice=indice->siguiente;indice->siguiente=borra->siguiente;}free(borra);}//////////////////////////////////////////////////////struct agenda *display_ficha(char *n){struct agenda *ficha;for(i=2;i<=79;i++){gotoxy(i,13);printf(" ");}gotoxy((80-18)/2,13);printf("Buscando ficha!!!!");if(!(ficha=(struct agenda *)busca(n))){for(i=2;i<=79;i++){gotoxy(i,13);printf(" ");}gotoxy((80-23)/2,13);printf("Ficha no encontrada!!!!");getche();return NULL;}elsevisu_ficha(ficha);return ficha;}///////////////////////////////////////////////////struct agenda *busca(char *inbuf){indice=primero;while(indice!=NULL){if(!strcmp(inbuf,indice->nombre))return indice;indice=indice->siguiente;}return NULL;}///////////////////////////////////////////////void intro(){clrscr();margenes();gotoxy(3,2);printf("Programa No: 30");hori(3);gotoxy(3,4);printf("Lista enlazada");gotoxy(3,9);printf("Descripcion:");gotoxy(3,10);printf("Este programa maneja una lista enlazada");hori(22);gotoxy(20,23);printf("Presiona Cualquier tecla para continuar");getche();}/////////////////////////////////////////main(){clrscr();portada();intro();for(;;){clrscr();borrando=0;int opc;margenes();gotoxy((80-14)/2,2);cprintf("<--@G3|\|d@-->");hori(3);gotoxy((80-22)/2,4);cprintf("1.- Agregar");gotoxy((80-22)/2,5);cprintf("2.- Listar todos");gotoxy((80-22)/2,6);cprintf("3.- Mostrar por nombre");gotoxy((80-22)/2,7);cprintf("4.- Borrar por nombre");gotoxy((80-22)/2,8);cprintf("5.- Guargar a disco");gotoxy((80-22)/2,9);cprintf("6.- Leer de disco");gotoxy((80-22)/2,10);cprintf("7.- Salir");hori(12);hori(14);gotoxy((80-22)/2,13);cprintf("Elige tu opcion: ");scanf("%d",&opc);switch(opc){case 1:intro_ficha();break;case 2:lista_ficha();break;case 3:muestra_ficha();break;case 4:borrando=1;borra_ficha();break;case 5:almacena_datos();break;case 6:lee_datos();break;case 7:exit(0);break;}}}////////////////////////////////////////////////void almacena_datos(void){FILE *ap;char *ruta=NULL;int c=0;for(i=2;i<=79;i++){gotoxy(i,13);printf(" ");}gotoxy((80-21)/2,13);printf("Guardando a disco!!!!");gotoxy(5,16);printf("Directorio: ");fflush(stdin);gets(ruta);if((ap=fopen(ruta,"wb"))==NULL){for(i=2;i<=79;i++){gotoxy(i,13);printf(" ");}gotoxy((80-31)/2,13);printf("El archivo no se puede abrir!!!!");getche();return;}indice=primero;for(i=2;i<=79;i++){gotoxy(i,13);printf(" ");}do{//efectoif(c==5){c=0;}if(c==0||c==3){gotoxy(39,13);printf("|");}if(c==1){gotoxy(39,13);printf("/");}if(c==2){gotoxy(39,13);printf("-");}if(c==4){gotoxy(39,13);printf("\\");}fwrite(indice,sizeof(struct agenda),1,ap);indice=indice->siguiente;c++;}while(indice!=(struct agenda*)NULL);fclose(ap);}////////////////////////////////////////////void lee_datos(void){FILE *ap;char *ruta=NULL;for(i=2;i<=79;i++){gotoxy(i,13);printf(" ");}gotoxy((80-21)/2,13);printf("Leer datos de disco!!!!");gotoxy(5,16);printf("Directorio: ");fflush(stdin);gets(ruta);if((ap=fopen(ruta,"rb"))==NULL){for(i=2;i<=79;i++){gotoxy(i,13);printf(" ");}gotoxy((80-31)/2,13);printf("El archivo no se puede abrir!!!!");getche();return;}asigna_memoria();do{indice->siguiente=nuevo;indice=nuevo;fread(indice,sizeof(struct agenda),1,ap);nuevo=(struct agenda*)malloc(sizeof(struct agenda));}while(indice->siguiente!=NULL);fclose(ap);} te pongo la portada por que si no deberas quitar algunas funciones
--- Código: Text --- void portada();void margenes();void hori(int y);void oso(int x, int y);char c;int x,y;void portada(){clrscr();//hacer margenes//margenes();//datos inportantestextcolor(15);gotoxy(25,2);cprintf("INSTITUTO POLITECNICO NACIONAL");gotoxy(19,4);cprintf("INGENIERIA EN COMUNICACIONES Y ELECTRONICA");gotoxy(33,6);cprintf("COMPUTACION III");gotoxy(37,8);cprintf("Alumnos:");gotoxy(16,10);cprintf(" Parra Jimenez Pedro Alejandro Boleta: 2003300670");gotoxy(16,12);cprintf(" Hernandez Curiel Carlos Boleta: 2003300000");gotoxy(36,14);cprintf("Grupo 3c5v");textcolor(GREEN+BLINK);gotoxy(12,16);cprintf("[*]_[.] '*-Presiona CUALQUIER tecla para continuar-*' [.]_[*]");getche();}//fin funcion principalvoid margenes(){textcolor(15);for(x=2;x<=79;x++){//margenes inferior/superiorc=205;gotoxy(x,1);cprintf("%c",c);gotoxy(x,24);cprintf("%c",c);}//esquinasc=188;c=201;gotoxy(1,1);cprintf("%c",c);c=200;gotoxy(1,24);cprintf("%c",c);c=187;gotoxy(80,1);cprintf("%c",c);for(y=2;y<24;y++){//margenes lateraslesc=186;gotoxy(1,y);cprintf("%c",c);gotoxy(80,y);cprintf("%c",c);}//fin margenes lateralesc=188;gotoxy(80,24);cprintf("%c",c);}void hori(int y){//hori(No de linea)textcolor(15);gotoxy(80,y);cprintf("¹");gotoxy(1,y);cprintf("Ì");for (x=2;x<80;x++){gotoxy(x,y);cprintf("Í");}} void oso(int x,int y){//declaracion//i coordenadas en x//j coordenada en y//j = Numero de linea; //colocar en la linea No//hori(i,j);}gotoxy(x,y);printf(" o,,,o");gotoxy(x,y+1);printf(" ( '; ' )");gotoxy(x,y+2);printf("(,('''''),)");gotoxy(x,y+3);printf(" ('')'('')");}
Espero que esto te ayude
Suerte
...Perdon por el flower, pero fue sin querer, di responder sin querer, mil disculpas
Navegación
[*] Página Anterior
Ir a la versión completa