Error de ejecucion en C

02/02/2004 - 22:58 por AsEr_7 | Informe spam
Hola,
EL programa consiste en:
primero te pedira datos:
Nombre, y edad,
creara una lista encadenada, en funcion de que le digas
si o no.
Despues lo volcara a un archivo, "Agenda.dat", que se
creara automaticamente.
Pero despues no visualiza nada, y da error de ejecucion.

No se si quiera, si el programa carga los datos
introducidos al fichero qeu se crea...

Ayudazme, porfavor...

Codigo:

//////////////////////////////////////////////////////////
////////////
////// INCLUDES DEL
PROGRAMA ///////////
//////////////////////////////////////////////////////////
////////////

#include <stdio.h>
#include <conio.h>
#include <malloc.h>

//////////////////////////////////////////////////////////
////////////
//////
TYPEDEF
//////////
//////////////////////////////////////////////////////////
////////////


typedef struct nodo * PUNT_NODO;
typedef char * PUNT_CHAR;
typedef FILE * FICHERO;

typedef struct
{
char nombre [20];
short edad;
}FICHA;

typedef struct nodo
{
FICHA info;
PUNT_NODO enlace;
}NODO;

//////////////////////////////////////////////////////////
////////////
////// PROTOTIPOS DE FUNCIONES
//////////
//////////////////////////////////////////////////////////
////////////

PUNT_NODO vuelca_fichero_a_lista (PUNT_CHAR nomfich);
PUNT_NODO crea_nuevo (FICHA elemento);
//void visualiza_info_lista (PUNT_NODO cabeza);
PUNT_NODO crea_lista (void);
FICHA pide_datos (void);
// Funcion de Salida
PUNT_NODO crea_nodo (PUNT_NODO cabeza, FICHA elemento);
void vuelca_lista_a_fichero (PUNT_NODO cabeza, PUNT_CHAR
nomfich);


/*********************************************************
************************/
////////// FUNCION
MAIN
///////////////
/*********************************************************
************************/

void main (void)
{
PUNT_NODO cabeza = (PUNT_NODO) NULL;
char nomfich [] = ("Agenda.dat");

vuelca_fichero_a_lista (nomfich);
//visualiza_info_lista (cabeza);
crea_lista ();
vuelca_lista_a_fichero (cabeza, nomfich);
}

/*********************************************************
************************/
///////// RESTO DE
FUNCIONES
///////////////
/*********************************************************
************************/

PUNT_NODO vuelca_fichero_a_lista (PUNT_CHAR nomfich)
{
FICHERO punt_fich;
PUNT_NODO cabeza, nuevo;
FICHA elemento;

cabeza = (PUNT_NODO) NULL;

if ((punt_fich = fopen (nomfich, "rb")) !=
(FICHERO) NULL)
{
while (fread(&elemento, sizeof(FICHA), 1,
punt_fich))
{
nuevo = crea_nuevo (elemento);
}
fclose (punt_fich);
}
return (cabeza);
}

/*********************************************************
***************************/

PUNT_NODO crea_nuevo (FICHA elemento)
{
PUNT_NODO nuevo;

nuevo = (PUNT_NODO)malloc(sizeof(NODO));

nuevo -> info = elemento;
nuevo ->enlace = (PUNT_NODO) NULL;

return (nuevo);

}

/*********************************************************
*************************

void visualiza_info_lista (PUNT_NODO cabeza)
{
PUNT_NODO recorre;

recorre = cabeza;

if (cabeza = (PUNT_NODO) NULL)
printf ("La lista esta vacia.");
else
{
puts (recorre -> info.nombre);
printf (" tiene %hd
años.", recorre ->info.edad);

recorre = cabeza ->enlace;
}
}






/*********************************************************
***************************/

PUNT_NODO crea_lista (void)
{
FICHA elemento;
PUNT_NODO nuevo, cabeza = (PUNT_NODO) NULL;

nuevo = crea_nodo (cabeza, elemento);

return (nuevo);
}

/*********************************************************
*************/

FICHA pide_datos (void)
{
FICHA nuevo;

printf ("Nombre: ");
fflush (stdin);
gets (nuevo.nombre);
printf ("Edad: ");
scanf ("%hd", &nuevo.edad);

return (nuevo);

}

/*******************************************/

PUNT_NODO crea_nodo (PUNT_NODO cabeza, FICHA elemento)
{
PUNT_NODO nuevo;
char respuesta;

do
{

nuevo = (PUNT_NODO)malloc(sizeof(NODO));

elemento = pide_datos ();

nuevo -> info = elemento;
nuevo -> enlace = cabeza;
cabeza = nuevo;
free (nuevo);

printf ("\tMas elementos? (S/N)");

}
while ((respuesta = getch ()) == 's' || respuesta
== 'S');

return (cabeza);

}

/*********************************************************
*/

void vuelca_lista_a_fichero (PUNT_NODO cabeza, PUNT_CHAR
nomfich)
{
FICHERO punt_fich;
PUNT_NODO viejo;

if((punt_fich = fopen (nomfich, "wb")) !=
(FICHERO) NULL);
{
while (cabeza != (PUNT_NODO) NULL)
{
fwrite(&cabeza -> info, sizeof
(FICHA), 1, punt_fich);

viejo = cabeza;
cabeza = cabeza -> enlace;
free (viejo);
}
fclose (punt_fich);
}
}

Preguntas similare

Leer las respuestas

#1 Jose Marcenaro
02/02/2004 - 23:49 | Informe spam
Es mas probable que puedas recibir ayuda "calificada" si pones este mensaje
en el foro microsoft.public.es.vc (Visual C) ya que este foro es de C#.NET,
y las diferencias entre los dos lenguajes son considerables.

Saludos
Jose

"AsEr_7" wrote in message
news:8f2601c3e9d7$b3b26800$
Hola,
EL programa consiste en:
primero te pedira datos:
Nombre, y edad,
creara una lista encadenada, en funcion de que le digas
si o no.
Despues lo volcara a un archivo, "Agenda.dat", que se
creara automaticamente.
Pero despues no visualiza nada, y da error de ejecucion.

No se si quiera, si el programa carga los datos
introducidos al fichero qeu se crea...

Ayudazme, porfavor...

Codigo:

//////////////////////////////////////////////////////////
////////////
////// INCLUDES DEL
PROGRAMA ///////////
//////////////////////////////////////////////////////////
////////////

#include <stdio.h>
#include <conio.h>
#include <malloc.h>

//////////////////////////////////////////////////////////
////////////
//////
TYPEDEF
//////////
//////////////////////////////////////////////////////////
////////////


typedef struct nodo * PUNT_NODO;
typedef char * PUNT_CHAR;
typedef FILE * FICHERO;

typedef struct
{
char nombre [20];
short edad;
}FICHA;

typedef struct nodo
{
FICHA info;
PUNT_NODO enlace;
}NODO;

//////////////////////////////////////////////////////////
////////////
////// PROTOTIPOS DE FUNCIONES
//////////
//////////////////////////////////////////////////////////
////////////

PUNT_NODO vuelca_fichero_a_lista (PUNT_CHAR nomfich);
PUNT_NODO crea_nuevo (FICHA elemento);
//void visualiza_info_lista (PUNT_NODO cabeza);
PUNT_NODO crea_lista (void);
FICHA pide_datos (void);
// Funcion de Salida
PUNT_NODO crea_nodo (PUNT_NODO cabeza, FICHA elemento);
void vuelca_lista_a_fichero (PUNT_NODO cabeza, PUNT_CHAR
nomfich);


/*********************************************************
************************/
////////// FUNCION
MAIN
///////////////
/*********************************************************
************************/

void main (void)
{
PUNT_NODO cabeza = (PUNT_NODO) NULL;
char nomfich [] = ("Agenda.dat");

vuelca_fichero_a_lista (nomfich);
//visualiza_info_lista (cabeza);
crea_lista ();
vuelca_lista_a_fichero (cabeza, nomfich);
}

/*********************************************************
************************/
///////// RESTO DE
FUNCIONES
///////////////
/*********************************************************
************************/

PUNT_NODO vuelca_fichero_a_lista (PUNT_CHAR nomfich)
{
FICHERO punt_fich;
PUNT_NODO cabeza, nuevo;
FICHA elemento;

cabeza = (PUNT_NODO) NULL;

if ((punt_fich = fopen (nomfich, "rb")) !(FICHERO) NULL)
{
while (fread(&elemento, sizeof(FICHA), 1,
punt_fich))
{
nuevo = crea_nuevo (elemento);
}
fclose (punt_fich);
}
return (cabeza);
}

/*********************************************************
***************************/

PUNT_NODO crea_nuevo (FICHA elemento)
{
PUNT_NODO nuevo;

nuevo = (PUNT_NODO)malloc(sizeof(NODO));

nuevo -> info = elemento;
nuevo ->enlace = (PUNT_NODO) NULL;

return (nuevo);

}

/*********************************************************
*************************

void visualiza_info_lista (PUNT_NODO cabeza)
{
PUNT_NODO recorre;

recorre = cabeza;

if (cabeza = (PUNT_NODO) NULL)
printf ("La lista esta vacia.");
else
{
puts (recorre -> info.nombre);
printf (" tiene %hd
años.", recorre ->info.edad);

recorre = cabeza ->enlace;
}
}






/*********************************************************
***************************/

PUNT_NODO crea_lista (void)
{
FICHA elemento;
PUNT_NODO nuevo, cabeza = (PUNT_NODO) NULL;

nuevo = crea_nodo (cabeza, elemento);

return (nuevo);
}

/*********************************************************
*************/

FICHA pide_datos (void)
{
FICHA nuevo;

printf ("Nombre: ");
fflush (stdin);
gets (nuevo.nombre);
printf ("Edad: ");
scanf ("%hd", &nuevo.edad);

return (nuevo);

}

/*******************************************/

PUNT_NODO crea_nodo (PUNT_NODO cabeza, FICHA elemento)
{
PUNT_NODO nuevo;
char respuesta;

do
{

nuevo = (PUNT_NODO)malloc(sizeof(NODO));

elemento = pide_datos ();

nuevo -> info = elemento;
nuevo -> enlace = cabeza;
cabeza = nuevo;
free (nuevo);

printf ("\tMas elementos? (S/N)");

}
while ((respuesta = getch ()) == 's' || respuesta
== 'S');

return (cabeza);

}

/*********************************************************
*/

void vuelca_lista_a_fichero (PUNT_NODO cabeza, PUNT_CHAR
nomfich)
{
FICHERO punt_fich;
PUNT_NODO viejo;

if((punt_fich = fopen (nomfich, "wb")) !(FICHERO) NULL);
{
while (cabeza != (PUNT_NODO) NULL)
{
fwrite(&cabeza -> info, sizeof
(FICHA), 1, punt_fich);

viejo = cabeza;
cabeza = cabeza -> enlace;
free (viejo);
}
fclose (punt_fich);
}
}
Respuesta Responder a este mensaje
#2 Rodrigo Meneses
03/02/2004 - 13:42 | Informe spam
Ciertamente. Por gente como tú es que los post se hacen interminables. Así
que respeta este grupo
y coloca tu preguntica en el foro adecuado
Te quedo claro?
-Rodrigo

"Jose Marcenaro" wrote in message
news:%
Es mas probable que puedas recibir ayuda "calificada" si pones este


mensaje
en el foro microsoft.public.es.vc (Visual C) ya que este foro es de


C#.NET,
y las diferencias entre los dos lenguajes son considerables.

Saludos
Jose

"AsEr_7" wrote in message
news:8f2601c3e9d7$b3b26800$
Hola,
EL programa consiste en:
primero te pedira datos:
Nombre, y edad,
creara una lista encadenada, en funcion de que le digas
si o no.
Despues lo volcara a un archivo, "Agenda.dat", que se
creara automaticamente.
Pero despues no visualiza nada, y da error de ejecucion.

No se si quiera, si el programa carga los datos
introducidos al fichero qeu se crea...

Ayudazme, porfavor...

Codigo:

//////////////////////////////////////////////////////////
////////////
////// INCLUDES DEL
PROGRAMA ///////////
//////////////////////////////////////////////////////////
////////////

#include <stdio.h>
#include <conio.h>
#include <malloc.h>

//////////////////////////////////////////////////////////
////////////
//////
TYPEDEF
//////////
//////////////////////////////////////////////////////////
////////////


typedef struct nodo * PUNT_NODO;
typedef char * PUNT_CHAR;
typedef FILE * FICHERO;

typedef struct
{
char nombre [20];
short edad;
}FICHA;

typedef struct nodo
{
FICHA info;
PUNT_NODO enlace;
}NODO;

//////////////////////////////////////////////////////////
////////////
////// PROTOTIPOS DE FUNCIONES
//////////
//////////////////////////////////////////////////////////
////////////

PUNT_NODO vuelca_fichero_a_lista (PUNT_CHAR nomfich);
PUNT_NODO crea_nuevo (FICHA elemento);
//void visualiza_info_lista (PUNT_NODO cabeza);
PUNT_NODO crea_lista (void);
FICHA pide_datos (void);
// Funcion de Salida
PUNT_NODO crea_nodo (PUNT_NODO cabeza, FICHA elemento);
void vuelca_lista_a_fichero (PUNT_NODO cabeza, PUNT_CHAR
nomfich);


/*********************************************************
************************/
////////// FUNCION
MAIN
///////////////
/*********************************************************
************************/

void main (void)
{
PUNT_NODO cabeza = (PUNT_NODO) NULL;
char nomfich [] = ("Agenda.dat");

vuelca_fichero_a_lista (nomfich);
//visualiza_info_lista (cabeza);
crea_lista ();
vuelca_lista_a_fichero (cabeza, nomfich);
}

/*********************************************************
************************/
///////// RESTO DE
FUNCIONES
///////////////
/*********************************************************
************************/

PUNT_NODO vuelca_fichero_a_lista (PUNT_CHAR nomfich)
{
FICHERO punt_fich;
PUNT_NODO cabeza, nuevo;
FICHA elemento;

cabeza = (PUNT_NODO) NULL;

if ((punt_fich = fopen (nomfich, "rb")) !> (FICHERO) NULL)
{
while (fread(&elemento, sizeof(FICHA), 1,
punt_fich))
{
nuevo = crea_nuevo (elemento);
}
fclose (punt_fich);
}
return (cabeza);
}

/*********************************************************
***************************/

PUNT_NODO crea_nuevo (FICHA elemento)
{
PUNT_NODO nuevo;

nuevo = (PUNT_NODO)malloc(sizeof(NODO));

nuevo -> info = elemento;
nuevo ->enlace = (PUNT_NODO) NULL;

return (nuevo);

}

/*********************************************************
*************************

void visualiza_info_lista (PUNT_NODO cabeza)
{
PUNT_NODO recorre;

recorre = cabeza;

if (cabeza = (PUNT_NODO) NULL)
printf ("La lista esta vacia.");
else
{
puts (recorre -> info.nombre);
printf (" tiene %hd
años.", recorre ->info.edad);

recorre = cabeza ->enlace;
}
}






/*********************************************************
***************************/

PUNT_NODO crea_lista (void)
{
FICHA elemento;
PUNT_NODO nuevo, cabeza = (PUNT_NODO) NULL;

nuevo = crea_nodo (cabeza, elemento);

return (nuevo);
}

/*********************************************************
*************/

FICHA pide_datos (void)
{
FICHA nuevo;

printf ("Nombre: ");
fflush (stdin);
gets (nuevo.nombre);
printf ("Edad: ");
scanf ("%hd", &nuevo.edad);

return (nuevo);

}

/*******************************************/

PUNT_NODO crea_nodo (PUNT_NODO cabeza, FICHA elemento)
{
PUNT_NODO nuevo;
char respuesta;

do
{

nuevo = (PUNT_NODO)malloc(sizeof(NODO));

elemento = pide_datos ();

nuevo -> info = elemento;
nuevo -> enlace = cabeza;
cabeza = nuevo;
free (nuevo);

printf ("\tMas elementos? (S/N)");

}
while ((respuesta = getch ()) == 's' || respuesta
== 'S');

return (cabeza);

}

/*********************************************************
*/

void vuelca_lista_a_fichero (PUNT_NODO cabeza, PUNT_CHAR
nomfich)
{
FICHERO punt_fich;
PUNT_NODO viejo;

if((punt_fich = fopen (nomfich, "wb")) !> (FICHERO) NULL);
{
while (cabeza != (PUNT_NODO) NULL)
{
fwrite(&cabeza -> info, sizeof
(FICHA), 1, punt_fich);

viejo = cabeza;
cabeza = cabeza -> enlace;
free (viejo);
}
fclose (punt_fich);
}
}


Respuesta Responder a este mensaje
#3 David caso
03/02/2004 - 14:02 | Informe spam
buenas:

bueno, bueno, haya paz, tranquilicemos Rodrigo, que pareces un mafioso
amezando al tendero para que no diga nada a la policia, ;P.

Con decirle que postee en el foro de vc, donde tendra una respuesta mas
cualificada, como muy bien dice el compi Jose, y ya esta, es muy
sencillo, no todo el mundo lleva navegando por internet años y años,
todos hemos empezado alguna vez, y todos tenemos derecho a equivocarnos,
ademas no creo que sea una falta de respeto, mas bien me parece un
deliz, facilmente subsanable, ademas muchas tonterias se ponen por estos
foros, y no pasa nada ;P.

un saludin
Respuesta Responder a este mensaje
#4 pablo crosio
03/02/2004 - 14:29 | Informe spam
Hola!

En primer lugar no vi mucho dentro de
vuelca_fichero_a_lista pues luego la lista se carga
ingresando los valores...
Pero pude ver un par de cosas que podría ser el tema de
que el programa no funcione como deseas..
Primero, en la función main deberías cambiar
crea_lista(); por cabeza = crea_lista (); pues al parecer
nunca estás guardando la cabecera de la lista.
En segundo lugar en la función crea_nodo, no liberes la
memoria (free) que estás alocando para los nuevos nodos,
la memoria deberías liberarla al pasar la lista al archivo
o aún mejor dentro de alguna funcion borra_lista o algo
por el estilo...

Espero te sirva...

Salu2!!

Pablo

Hola,
EL programa consiste en:
primero te pedira datos:
Nombre, y edad,
creara una lista encadenada, en funcion de que le digas
si o no.
Despues lo volcara a un archivo, "Agenda.dat", que se
creara automaticamente.
Pero despues no visualiza nada, y da error de ejecucion.

No se si quiera, si el programa carga los datos
introducidos al fichero qeu se crea...

Ayudazme, porfavor...

Codigo:

//////////////////////////////////////////////////////////
////////////
////// INCLUDES DEL
PROGRAMA ///////////
//////////////////////////////////////////////////////////
////////////

#include <stdio.h>
#include <conio.h>
#include <malloc.h>

//////////////////////////////////////////////////////////
////////////
//////
TYPEDEF
//////////
//////////////////////////////////////////////////////////
////////////


typedef struct nodo * PUNT_NODO;
typedef char * PUNT_CHAR;
typedef FILE * FICHERO;

typedef struct
{
char nombre [20];
short edad;
}FICHA;

typedef struct nodo
{
FICHA info;
PUNT_NODO enlace;
}NODO;

//////////////////////////////////////////////////////////
////////////
////// PROTOTIPOS DE FUNCIONES
//////////
//////////////////////////////////////////////////////////
////////////

PUNT_NODO vuelca_fichero_a_lista (PUNT_CHAR nomfich);
PUNT_NODO crea_nuevo (FICHA elemento);
//void visualiza_info_lista (PUNT_NODO cabeza);
PUNT_NODO crea_lista (void);
FICHA pide_datos (void);
// Funcion de Salida
PUNT_NODO crea_nodo (PUNT_NODO cabeza, FICHA elemento);
void vuelca_lista_a_fichero (PUNT_NODO cabeza, PUNT_CHAR
nomfich);


/*********************************************************
************************/
////////// FUNCION
MAIN
///////////////
/*********************************************************
************************/

void main (void)
{
PUNT_NODO cabeza = (PUNT_NODO) NULL;
char nomfich [] = ("Agenda.dat");

vuelca_fichero_a_lista (nomfich);
//visualiza_info_lista (cabeza);
crea_lista ();
vuelca_lista_a_fichero (cabeza, nomfich);
}

/*********************************************************
************************/
///////// RESTO DE
FUNCIONES
///////////////
/*********************************************************
************************/

PUNT_NODO vuelca_fichero_a_lista (PUNT_CHAR nomfich)
{
FICHERO punt_fich;
PUNT_NODO cabeza, nuevo;
FICHA elemento;

cabeza = (PUNT_NODO) NULL;

if ((punt_fich = fopen (nomfich, "rb")) !=
(FICHERO) NULL)
{
while (fread(&elemento, sizeof(FICHA), 1,
punt_fich))
{
nuevo = crea_nuevo (elemento);
}
fclose (punt_fich);
}
return (cabeza);
}

/*********************************************************
***************************/

PUNT_NODO crea_nuevo (FICHA elemento)
{
PUNT_NODO nuevo;

nuevo = (PUNT_NODO)malloc(sizeof(NODO));

nuevo -> info = elemento;
nuevo ->enlace = (PUNT_NODO) NULL;

return (nuevo);

}

/*********************************************************
*************************

void visualiza_info_lista (PUNT_NODO cabeza)
{
PUNT_NODO recorre;

recorre = cabeza;

if (cabeza = (PUNT_NODO) NULL)
printf ("La lista esta vacia.");
else
{
puts (recorre -> info.nombre);
printf (" tiene %hd
años.", recorre ->info.edad);

recorre = cabeza ->enlace;
}
}






/*********************************************************
***************************/

PUNT_NODO crea_lista (void)
{
FICHA elemento;
PUNT_NODO nuevo, cabeza = (PUNT_NODO) NULL;

nuevo = crea_nodo (cabeza, elemento);

return (nuevo);
}

/*********************************************************
*************/

FICHA pide_datos (void)
{
FICHA nuevo;

printf ("Nombre: ");
fflush (stdin);
gets (nuevo.nombre);
printf ("Edad: ");
scanf ("%hd", &nuevo.edad);

return (nuevo);

}

/*******************************************/

PUNT_NODO crea_nodo (PUNT_NODO cabeza, FICHA elemento)
{
PUNT_NODO nuevo;
char respuesta;

do
{

nuevo = (PUNT_NODO)malloc(sizeof(NODO));

elemento = pide_datos ();

nuevo -> info = elemento;
nuevo -> enlace = cabeza;
cabeza = nuevo;
free (nuevo);

printf ("\tMas elementos? (S/N)");

}
while ((respuesta = getch ()) == 's' || respuesta
== 'S');

return (cabeza);

}

/*********************************************************
*/

void vuelca_lista_a_fichero (PUNT_NODO cabeza, PUNT_CHAR
nomfich)
{
FICHERO punt_fich;
PUNT_NODO viejo;

if((punt_fich = fopen (nomfich, "wb")) !=
(FICHERO) NULL);
{
while (cabeza != (PUNT_NODO) NULL)
{
fwrite(&cabeza -> info, sizeof
(FICHA), 1, punt_fich);

viejo = cabeza;
cabeza = cabeza -> enlace;
free (viejo);
}
fclose (punt_fich);
}
}
.

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida