tengo que entregar para mañana un trabajo en C, en el que se recojan unos datos de una estructura, de esa estructura se pase auna lista enlazada, y esa lista enlazada, guardarla en un fichero....no sé si me he explicado bien xD es una modificación a un programa que habiamos hecho anteriormente, en el que usando estructuras, recojiamos unos datos y bla boa bla... ahora, el profe quiere que en lugar de guardar las estructuras en ficheros, metamos los datos en listas enlazadas ( de estructuras) y volquemos esa lista, celda a celda, en el fichero, para luego hacer lo contrario, leer de fichero y volcar en lista de nuevo.
pues no tenog ni pajolera de como hacer eso.y se supone que tengoq ue entregar mañana el "trabajo", va con nota ( Y ME HACE MUCHA FALTA ESA NOTA, el examen del viernes, de esta asignatura, ha sido un completo PHAIL. precismanete, cayó este ejercicio....y valia 7 puntos.) mi idea es abrir el fichero, mu bien, recojer los datos y meterlo en la estructura, bien,pasar esa estructura a una celda de la lista enlazada, hasta ahi llego y....bien, no se ocmo guardar la lista en fichero, y por supuesto, no sé como leerla de fichero y meterla en lista de nuevo xD el tema de las listas enlazadas no lo he pillado bien, lo explicaron cuando estuve mala ( algunos se acordaran, que hará un mes o así, pille una infección gorda qe me tuvo bastante chunga un par de semanas..)y cuando volvi a clase, habia periddo el hilo completamente. el resto del curso he llvado programación bastante bien, sin suspender un examen..hast aahora >< mierda, como me quede este trimestre, toca repetir curso..si, solo por una asignatura. asi de joputas son, sin importar que en el resto tenga 8's y 9's. No he conseguido recuperar esa peridda de hilo >< estoy mas enterada que entonces, pero me falta "ese puntito" aun. en fin, djeo de quejarme, dejo mi codigo ( chapucero, las funciones están es una libreria "casera" creada por nosotros en clase, pero que el compilador no me la reconoce, cunado uso una fucion me dice que no existe...si te he puesto la libreria, coño! esa es otra...como hago para que me reconozca las librerias creadas por mi? usamos turbo C en clase.). por favor, necesito ayuda...xose....porfi....estoy desesperada, me estoy jugando el curso. mira que llevo ayer y hoy todo le tiempo dale que te pego a ver si saco algo en claro, y no...
#include
#include
#include
#include
struct s_libro {
char titulo [50];
char autor [50];
char editorial [50];
int ano;
char isbn [14];
};
void nuevolibro(void);
void consultarlibro(void);
void main (void)
{
int menu=0,submenu=0;
char seguir;
lista L;
FILE *fichero;
do
{
fichero=fopen("libros.dat","ab+");
if(fichero == NULL)
{
printf("Error al crear/acceder al fichero usuarios.dat");
}
else
{
L=crear();
do
{
fflush(stdin);
clrscr();
printf("\n********BIBLIOTECA VIRTUAL********");
printf("\n\n1-. LIBROS");
printf("\n2-. SALIR");
printf("\n Por favor, seleccione una opción: ");
scanf("%d",&menu);
switch(menu)
{
case 1:
{
fflush(stdin);
printf("\n ********LIBROS********");
printf("\n\n 1.- Nuevo libro.");
printf("\n 2.- Consultar libro.");
printf("\n Seleccione una opción: ");
scanf("%d",&submenu);
switch(submenu)
{
case 1 : nuevolibro();
break;
case 2: consultarlibro();
break;
default : printf("Opcion no valida. Introduzca una opcion valida");
}
}
break;
}
fflush(stdin);
printf("¿Quiere salir del programa? s/n ");
scanf("%c",&seguir);
}while((seguir!='s')||(seguir!='s'));
fwrite(libro,sizeof(libro),1,fichero);
fclose(fichero);
}
}
void nuevolibro(void)
{
/* Funcion que que mete libros en una escructura libro y los guarda en un fichero libros.bat
parametros:
no usa ningun parametro
devuelve:
no devuelve nada
*/
struct s_libro libro;
char sn;
do
{
fflush(stdin);
printf("\nIntroduzca titulo: ");
gets(libro.titulo) ;
fflush(stdin);
printf("\nIntroduzca autor: ");
gets(libro.autor);
fflush(stdin);
printf("\nIntroduzca editorial: ");
gets(libro.editorial);
printf("\nIntroduzca año de publicación: ");
scanf("%d",&libro.ano);
fflush(stdin);
printf("\nIntroduzca ISBN: ");
gets(libro.isbn);
fflush(stdin);
void insertar(libro,fin(L),L);
fflush(stdin);
printf("\n ¿Desea introducir otro libro? s/n: ");
scanf("%c",&sn);
fflush(stdin);
}while((sn=='s')||(sn=='S'));
}
void consultarlibro(void)
{
/*Funcion que busca un libro en un fichero libros.bat previamente creado,dando opcion a buscarlo por ISBN o por titulo del mismo.
Parametros:
No se le pasa ni usa ninguno.
Devuelve:
No devuelve nada.
*/
struct s_libro libro;
int opcion=0,comparacion;
char isbn[14],titulo[50],sn;
FILE *fichero;
do
{
printf("/n******** CONSULTAR LIBRO ********");
printf("\n 1.- Por ISBN");
printf("\n 2.- Por titulo");
printf("\n 3.- Listado Completo");
printf("\n Seleccione una opción: ");
scanf("%d",&opcion);
switch (opcion)
{
case 1:
{
fflush(stdin);
printf("\n Por favor, introduzca ISBN del libro que busca: ");
gets(isbn);
fflush(stdin);
do
{
if(elemento(posicion(*isbn,L),L)!=NULL);
{
printf("\n TITULO: %s ",libro.titulo);
printf("\n AUTOR: %s ",libro.autor);
printf("\n EDITORIAL: %s ", libro.editorial);
printf("\n AÑO DE PUBLICACION: %d ",libro.ano);
printf("\n ISBN: %s ",libro.isbn);
}
else
{
printf("\n No se ha encontrado el isbn especificado");
}
}
break;
fflush(stdin);
printf("\n ¿Desea hacer otra consulta? s/n: ");
scanf("%c",&sn);
fflush(stdin);
}while((sn=='s')||(sn=='S'));
}
Decir que la funcion " consultarlibro" no la he editado aun, hasta que no solucione los problemas de la anterior,la de meter...la otra es la de extraer. pliz, help? antes de mañana, cuantos antes mejor, pliz?
deberia usar un fwrite, verdad? peor que le digo? y tengo que leer los datos de fichero antes de hacer nada, verdad? fread? OUENDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN!!!!!!!!!!!!!!!!!