Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: heddydearmas en 25 Mayo 2013, 21:50 pm



Título: Ayuda con ficheros en C
Publicado por: heddydearmas en 25 Mayo 2013, 21:50 pm
Hola amigos, el ejercicio consta de multilista cargar por teclado datos y despues mostrarlos en ficheros, lo de cargar ya lo hice, pero no pude hacer estos dos puntos:
1. Ingresar un alumno y mostrar todos los libros que posee.
2. Ingresar un libro y mostrar el alumno  que lo tiene

¿¿ Alguien xfa me puede ayudar??

#include <stdio.h>
#include <stdlib.h>
typedef  struct  alumnos
{
    int nro_legajo;
    char nombre[15];
    struct alumnoslibros *al;
    struct alumnos *sig;
} nodo_alumnos;

typedef  struct  alumnoslibros
{
    int nro_libro;
    char titulo[40];
    char autor[40];
    struct alumnoslibros *sig;
} nodo_alumnoslibros;

FILE *ptr;
void cargar(nodo_alumnos *p);
void cargar2(nodo_alumnoslibros *p);


int main()
{
    nodo_alumnos *lista=(nodo_alumnos*)malloc(sizeof(nodo_alumnos));
    cargar(lista);
}


void cargar(nodo_alumnos *p)
{
    FILE *ptr;
    if((ptr=fopen("Registros_Alumnos.txt","a"))!=NULL)
    {
        printf("\n\n(fin en -1)Legajo: ");
        scanf("%d",&p->nro_legajo);
        if(p->nro_legajo == -1)
        {
            p->al = NULL;
        }
        else
        {
            printf("Nombre: ");
            scanf(" %[^\n]",p->nombre);
            fprintf(ptr,"\n\n%d %s",p->nro_legajo,p->nombre);
            p->al = (nodo_alumnoslibros*)malloc(sizeof(nodo_alumnoslibros));
            cargar2(p->al);
            p->sig = (nodo_alumnos*)malloc(sizeof(nodo_alumnos));
            cargar(p->sig);
        }
    }
    else
    {
        printf("\n\t\t\tERROR AL ABRIR ARCHIVO, VERIFIQUE EXISTENCIA");
    }
   fclose(ptr);
}

void cargar2(nodo_alumnoslibros *p)
{
    FILE *ptr;
    ptr=fopen("Registros_Libros.txt","a");
    printf("\n(fin en -1)Nro.Libro: ");
    scanf("%d",&p->nro_libro);
    if(p->nro_libro == -1)
    {
        p->sig = NULL;
    }
    else
    {
        printf("Titulo: ");
        scanf(" %[^\n]",p->titulo);
        printf("Autor: ");
        scanf(" %[^\n]",p->autor);
        fprintf(ptr,"\n%d %s %s",p->nro_libro,p->titulo,p->autor);
        p->sig = (nodo_alumnoslibros*)malloc(sizeof(nodo_alumnoslibros));
        cargar2(p->sig);
    }
    fclose(ptr);
}