Programación General > C/C++

 Como Usar Fread() Y Fwrite() Usando Pilas ?

<< < (2/2)

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&#60;stdio.h&#62;#include&#60;string.h&#62;#include&#60;conio.h&#62;#include&#60;ctype.h&#62;#include&#60;dos.h&#62;#include&#60;stdlib.h&#62;#include&#60;a:portada.h&#62;# 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(&#34;Espacio de memoria insuficiente&#34;);getche();for(i=2;i&#60;=79;i++){gotoxy(i,13);printf(&#34; &#34;);}return;}if(primero==(struct agenda*)NULL)primero=indice=nuevo;else{indice=primero;while(indice-&#62;siguiente!=(struct agenda*)NULL)indice=indice-&#62;siguiente;indice-&#62;siguiente=nuevo;indice=nuevo;}}/////////////////////////////////////////////////////void intro_ficha(){asigna_memoria();for(i=2;i&#60;=79;i++){gotoxy(i,13);printf(&#34; &#34;);}gotoxy((80-19)/2,13);printf(&#34;Agregando Datos!!!!&#34;);gotoxy(5,16);printf(&#34;Nombre: &#34;);fflush(stdin);gets(indice-&#62;nombre);gotoxy(5,17);printf(&#34;Direccion: &#34;);fflush(stdin);gets(indice-&#62;direccion);gotoxy(5,18);printf(&#34;Telefono: &#34;);fflush(stdin);gets(indice-&#62;telefono);indice-&#62;siguiente=(struct agenda*)NULL;}/////////////////////////////////////////void lista_ficha(void){if(primero==(struct agenda*)NULL){for(i=2;i&#60;=79;i++){gotoxy(i,13);printf(&#34; &#34;);}gotoxy((80-15)/2,13);printf(&#34;Lista vacia!!!!&#34;);getche();//retener mensajereturn;}indice=primero;do{visu_ficha(indice);indice=indice-&#62;siguiente;}while(indice!=(struct agenda*)NULL);}////////////////////////////////////////////////void muestra_ficha(void){char inbuf[30];for(i=2;i&#60;=79;i++){gotoxy(i,13);printf(&#34; &#34;);}gotoxy(5,13);printf(&#34;Mostrar la ficha con Nombre: &#34;);fflush(stdin);gets(inbuf);display_ficha(inbuf);}/////////////////////////////////////////////////////void visu_ficha(struct agenda *visu){for(i=2;i&#60;=79;i++){gotoxy(i,13);printf(&#34; &#34;);gotoxy(i,16);printf(&#34; &#34;);gotoxy(i,17);printf(&#34; &#34;);gotoxy(i,18);printf(&#34; &#34;);}gotoxy(30,13);printf(&#34;Mostrando datos!!!!&#34;);gotoxy(5,16);printf(&#34;Nombre: %s&#34;,visu-&#62;nombre);gotoxy(5,17);printf(&#34;Direccion: %s&#34;,visu-&#62;direccion);gotoxy(5,18);printf(&#34;Telefono: %s&#34;,visu-&#62;telefono);if(borrando==0){hori(22);gotoxy(26,23);printf(&#34;Presiona CUALQUIER tecla para continuar&#34;);getche();}}////////////////////////////////////////////////void borra_ficha(){struct agenda *borra;char inbuf[30];for(i=2;i&#60;=79;i++){gotoxy(i,13);printf(&#34; &#34;);}gotoxy(5,13);printf(&#34;Borra la ficha con el nombre: &#34;);fflush(stdin);gets(inbuf);borra= ((struct agenda*)display_ficha(inbuf));if(borra==(struct agenda*)NULL)return;for(i=2;i&#60;=79;i++){gotoxy(i,13);printf(&#34; &#34;);}gotoxy(5,13);printf(&#34;Deseas borrar esta ficha? s/n: &#34;);switch(toupper(getche())){case 'N':return;case 'S':break;}if(borra==primero)primero=primero-&#62;siguiente;else{indice=primero;while(indice-&#62;siguiente!=borra)indice=indice-&#62;siguiente;indice-&#62;siguiente=borra-&#62;siguiente;}free(borra);}//////////////////////////////////////////////////////struct agenda *display_ficha(char *n){struct agenda *ficha;for(i=2;i&#60;=79;i++){gotoxy(i,13);printf(&#34; &#34;);}gotoxy((80-18)/2,13);printf(&#34;Buscando ficha!!!!&#34;);if(!(ficha=(struct agenda *)busca(n))){for(i=2;i&#60;=79;i++){gotoxy(i,13);printf(&#34; &#34;);}gotoxy((80-23)/2,13);printf(&#34;Ficha no encontrada!!!!&#34;);getche();return NULL;}elsevisu_ficha(ficha);return ficha;}///////////////////////////////////////////////////struct agenda *busca(char *inbuf){indice=primero;while(indice!=NULL){if(!strcmp(inbuf,indice-&#62;nombre))return indice;indice=indice-&#62;siguiente;}return NULL;}///////////////////////////////////////////////void intro(){clrscr();margenes();gotoxy(3,2);printf(&#34;Programa No: 30&#34;);hori(3);gotoxy(3,4);printf(&#34;Lista enlazada&#34;);gotoxy(3,9);printf(&#34;Descripcion:&#34;);gotoxy(3,10);printf(&#34;Este programa maneja una lista enlazada&#34;);hori(22);gotoxy(20,23);printf(&#34;Presiona Cualquier tecla para continuar&#34;);getche();}/////////////////////////////////////////main(){clrscr();portada();intro();for(;;){clrscr();borrando=0;int opc;margenes();gotoxy((80-14)/2,2);cprintf(&#34;&#60;--@G3|&#092;|d@--&#62;&#34;);hori(3);gotoxy((80-22)/2,4);cprintf(&#34;1.- Agregar&#34;);gotoxy((80-22)/2,5);cprintf(&#34;2.- Listar todos&#34;);gotoxy((80-22)/2,6);cprintf(&#34;3.- Mostrar por nombre&#34;);gotoxy((80-22)/2,7);cprintf(&#34;4.- Borrar por nombre&#34;);gotoxy((80-22)/2,8);cprintf(&#34;5.- Guargar a disco&#34;);gotoxy((80-22)/2,9);cprintf(&#34;6.- Leer de disco&#34;);gotoxy((80-22)/2,10);cprintf(&#34;7.- Salir&#34;);hori(12);hori(14);gotoxy((80-22)/2,13);cprintf(&#34;Elige tu opcion: &#34;);scanf(&#34;%d&#34;,&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&#60;=79;i++){gotoxy(i,13);printf(&#34; &#34;);}gotoxy((80-21)/2,13);printf(&#34;Guardando a disco!!!!&#34;);gotoxy(5,16);printf(&#34;Directorio: &#34;);fflush(stdin);gets(ruta);if((ap=fopen(ruta,&#34;wb&#34;))==NULL){for(i=2;i&#60;=79;i++){gotoxy(i,13);printf(&#34; &#34;);}gotoxy((80-31)/2,13);printf(&#34;El archivo no se puede abrir!!!!&#34;);getche();return;}indice=primero;for(i=2;i&#60;=79;i++){gotoxy(i,13);printf(&#34; &#34;);}do{//efectoif(c==5){c=0;}if(c==0||c==3){gotoxy(39,13);printf(&#34;|&#34;);}if(c==1){gotoxy(39,13);printf(&#34;/&#34;);}if(c==2){gotoxy(39,13);printf(&#34;-&#34;);}if(c==4){gotoxy(39,13);printf(&#34;&#092;&#092;&#34;);}fwrite(indice,sizeof(struct agenda),1,ap);indice=indice-&#62;siguiente;c++;}while(indice!=(struct agenda*)NULL);fclose(ap);}////////////////////////////////////////////void lee_datos(void){FILE *ap;char *ruta=NULL;for(i=2;i&#60;=79;i++){gotoxy(i,13);printf(&#34; &#34;);}gotoxy((80-21)/2,13);printf(&#34;Leer datos de disco!!!!&#34;);gotoxy(5,16);printf(&#34;Directorio: &#34;);fflush(stdin);gets(ruta);if((ap=fopen(ruta,&#34;rb&#34;))==NULL){for(i=2;i&#60;=79;i++){gotoxy(i,13);printf(&#34; &#34;);}gotoxy((80-31)/2,13);printf(&#34;El archivo no se puede abrir!!!!&#34;);getche();return;}asigna_memoria();do{indice-&#62;siguiente=nuevo;indice=nuevo;fread(indice,sizeof(struct agenda),1,ap);nuevo=(struct agenda*)malloc(sizeof(struct agenda));}while(indice-&#62;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(&#34;INSTITUTO POLITECNICO NACIONAL&#34;);gotoxy(19,4);cprintf(&#34;INGENIERIA EN COMUNICACIONES Y ELECTRONICA&#34;);gotoxy(33,6);cprintf(&#34;COMPUTACION III&#34;);gotoxy(37,8);cprintf(&#34;Alumnos:&#34;);gotoxy(16,10);cprintf(&#34; Parra Jimenez Pedro Alejandro Boleta: 2003300670&#34;);gotoxy(16,12);cprintf(&#34; Hernandez Curiel Carlos       Boleta: 2003300000&#34;);gotoxy(36,14);cprintf(&#34;Grupo 3c5v&#34;);textcolor(GREEN+BLINK);gotoxy(12,16);cprintf(&#34;[*]_[.] '*-Presiona CUALQUIER tecla para continuar-*' [.]_[*]&#34;);getche();}//fin funcion principalvoid margenes(){textcolor(15);for(x=2;x&#60;=79;x++){//margenes inferior/superiorc=205;gotoxy(x,1);cprintf(&#34;%c&#34;,c);gotoxy(x,24);cprintf(&#34;%c&#34;,c);}//esquinasc=188;c=201;gotoxy(1,1);cprintf(&#34;%c&#34;,c);c=200;gotoxy(1,24);cprintf(&#34;%c&#34;,c);c=187;gotoxy(80,1);cprintf(&#34;%c&#34;,c);for(y=2;y&#60;24;y++){//margenes lateraslesc=186;gotoxy(1,y);cprintf(&#34;%c&#34;,c);gotoxy(80,y);cprintf(&#34;%c&#34;,c);}//fin margenes lateralesc=188;gotoxy(80,24);cprintf(&#34;%c&#34;,c);}void hori(int y){//hori(No de linea)textcolor(15);gotoxy(80,y);cprintf(&#34;¹&#34;);gotoxy(1,y);cprintf(&#34;Ì&#34;);for (x=2;x&#60;80;x++){gotoxy(x,y);cprintf(&#34;Í&#34;);}} 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(&#34;   o,,,o&#34;);gotoxy(x,y+1);printf(&#34; ( '&#59; ' )&#34;);gotoxy(x,y+2);printf(&#34;(,('''''),)&#34;);gotoxy(x,y+3);printf(&#34; ('')'('')&#34;);}  
Espero que esto te ayude

Suerte


...Perdon por el flower, pero fue sin querer, di responder sin querer, mil disculpas

Navegación

[0] Índice de Mensajes

[*] Página Anterior

Ir a la versión completa