| |||
como guardar lista enlazada en un archivo Hola¡, tengo una duda que no consigo aclarar, en C o C++, yo creo una estructura dinamica en la cual el ultimo miembro se supone que es un puntero a la siguiente estructura, si solo hay una este contiene un NULL, entonces mis dudas son: que sentido tiene el puntero que apunta a la siguiente estructura si yo quiero guardarlas en modo binario. |
| |||
Re: como guardar lista enlazada en un archivo Sobre como guardar los datos de una lista de enteros, les paso un ejercicio que tuve que realizar para guardar nros de legajo de alumnos en un archivo de texto o binario: >>Cambios realizados en base a las sugerencias: :)
Código:
#include<stdio.h> #include<stdlib.h> typedef struct n *pnodo; typedef struct n { int LU; pnodo sig; }nodo; void CargarListaEnteros(pnodo *lista) { pnodo aux; aux=(pnodo) malloc (sizeof(nodo)); printf("Ingrese un numero para la lista:\n"); scanf("%i",&(aux->LU)); getc(stdin); (*lista)=aux; while(aux->LU!=(-1)) { aux->sig=(pnodo) malloc (sizeof(nodo)); aux=aux->sig; printf("Ingrese un numero para la lista:\n"); scanf("%i",&(aux->LU)); getc(stdin); } aux->sig=NULL; } void MostrarLista(pnodo lista) { int nro=1; pnodo aux; aux=lista; while(aux!=NULL) { printf("|Lista: %i|LU: %i|\n",nro,aux->LU); aux=aux->sig; nro++; } } void CopiarLISTAdeEnterosEnArch(pnodo copialista) { FILE *archivobin, *archivotxt; int nro; char caracter; printf("Escribir la lista de los legajos de los alumnos en un archivo:\n"); printf("(B)inario o de texto (cualquier letra): "); scanf("%c",&caracter); getc(stdin); archivobin=fopen("Listalumnos.alu","wb"); archivotxt=fopen("Listalumnos.txt","w"); if((archivotxt==NULL)&&(archivotxt==NULL)) printf("Error al acceder a los archivos...\n"); else { while(copialista!=NULL) { if(caracter=='B') { nro=copialista->LU; fwrite(&nro,sizeof(int),1,archivobin); } else fprintf(archivotxt,"%i\n",copialista->LU); copialista=copialista->sig; } } fclose(archivobin); fclose(archivotxt); } int main (void) { pnodo lista=NULL; printf("Se Cargara la lista de legajos de Alumnos|con -1 termina y se lo incluye ademas:\n\n"); CargarListaEnteros(&lista); printf("\n"); printf("La lista resultante es:\n"); MostrarLista(lista); printf("\n"); printf("Se copia la lista resultante en un archivo:\n"); CopiarLISTAdeEnterosEnArch(lista); return 0; } Última edición por Aprendiz-DAO; 22/12/2006 a las 08:17 |
| |||
Re: como guardar lista enlazada en un archivo No reabras temas zanjados de hace meses :) Por otra parte, tu código es extraño. Por ejemplo, ¿para qué pides como argumentos dos "FILE *" si no les utilizas para nada? Decláralos en la función que los use. ¿Por qué declaras "lista" y "copialista" simplemente para luego hacer "copialista = lista"? Etc ;) |