Ver Mensaje Individual
  #1 (permalink)  
Antiguo 14/03/2008, 16:04
eDuFlasH
 
Fecha de Ingreso: marzo-2008
Mensajes: 3
Antigüedad: 16 años, 10 meses
Puntos: 0
GraBaR LisTa eNLaZaDa a FiCheRo

Ola!! Estoy acabando un proyecyo en la universidad y me estoy volviendo loco... he intentado de muchas maneras grabar una lista enlazada en un fichero, para posteriormente cargarla en algun nuevo inicio del programa pero no hay manera... Trabajo sobre Linux(ubuntu) y programo en C. Dejo parte del programa.

Código:
struct datos
{
	int codigo;
	char nombre[10];
};		// Estructura que define los datos a manejar por el programa

struct nodo
{
	struct datos dato;
   struct nodo *sig;
};

struct nodo * introducir( struct nodo *cabeza);
int menu();
void listar(struct nodo *cabeza);

void main ()
{
	struct nodo *primero=NULL;
   int opc;

   do
   {
   opc=menu();
   switch(opc)
   {
   	case 1:
         primero=introducir(primero);
      	break;
      case 2:
         listar(primero);
      	break;
   }
   }while(opc!=3);
}

int menu()
{
   int opcion;

	do
   {
		system("cls");
		printf("\n\n\t\tMeNu\n");
   	printf("\n\t1.- ReGisTraR uNa VeNTa.");
   	printf("\n\t2.- LiSTar.");
      printf("\n\t3.- SaLiR.");
      printf("\n\n\t\tIntroDuzCa uNa oPCioN... ");
   	scanf("%d",&opcion);
      if(opcion<=0 || opcion>3)
      	printf("\n\n\tMEEEEEC. 3RR0R");
   }while(opcion<=0 || opcion>3);

   return opcion;
}

struct nodo *introducir( struct nodo *cabeza)
{
	struct nodo *aux=cabeza;
   struct nodo *paux;

   aux=(struct nodo *)malloc(sizeof(struct nodo));
   if(aux==NULL)
   	exit(-1);

   aux->sig=NULL;

   printf("\nCoDiGo... ");
   scanf("%d",&aux->dato.codigo);
   fflush(stdin);
   printf("\nNomBre... ");
   scanf("%10[^\n]", &aux->dato.nombre);

   if(cabeza==NULL)
   	cabeza=aux;
	else
   {
   	paux=cabeza;
      while(paux->sig!=NULL)
      {
      	paux=paux->sig;
      }
      paux->sig=aux;
   }

return cabeza;
}

void listar(struct nodo *cabeza)
{
   struct nodo *paux;  // --> Se crea puntero auxiliar

   paux=cabeza; // --> Se igualan ambos. Esto se hace para recorrer con el
                // puntero y no el parametro cabeza.

   /*( Proceso... Como recorrer un puntero)*/

   while(paux!=NULL)
   {
      //(1). Si puntero aux es != nuLL...
      // Visualizo los datos de la venta registrados en el nodo paux

		printf("\n\n\t...ProDuCTo...\n\n");
      printf("\nCoDiGo.... %d",(paux->dato).codigo);
      printf("\nNoMBre.. %s",(paux->dato).nombre);

      //(2). Avanzo un nodo...
      paux=paux->sig;
   }
   return;
}
Seria crear una nueva funcion que reciba la estructura y que la guarde, no enviaria nada, seria void, puesto que ya acabaria el programa y esta solo se efectuaria a la salida!! Espero alguna ayudita jeje, gracias de todas formas.
Saludos