[C con Clase] (sin asunto)

Marcelo Vega neo.cclase en gmail.com
Mie Nov 29 06:53:00 CET 2006


Tengo el siguiente codigo.
Lo que quiero es que depsues de llenar las estructuras, poder encontrar el
caballo buskandolo por el jinete, osea una komparacion de strings.
Al haver fread esta mi consulta. Se hace fread hasta ke el flag sea 1 o se
llegue a fin de pagina.
Cuando salga del while, deberia tener kargada en memoria la ultima
estructura leida, no? esa es mi duda, porque despues al imprimir por
pantalla me muestra la ultima estructura en ser llenada, no la ultima en ser
leida con el fread.



#include <stdio.h>
#include <string.h>

#define MAX 100
#define n_carr 2
#define n_cab 2


struct caballo
{
    int id;
    char jinete[MAX];
    float tiempo;
};

struct carrera
{
    int numero;
    int id_ganador;
    struct caballo caballos;
}carreras;



int main()
{
    FILE *ptr;
    char jinete_opcion[MAX];
    int j,i;
    int flag = 0;


    if ((ptr = fopen("listado.txt", "w")) != NULL)
    {
        for(i=0; i<n_carr; i++)
        {
            printf("Ingrese numero carrera\n");
            fflush(stdin);
            scanf("%d", &carreras.numero);

            printf("Ingrese id del ganador\n");
            fflush(stdin);
            scanf("%d", &carreras.id_ganador);

            for(j=0; j<n_cab; j++)
            {
                printf("Ingrese id caballo %d\n", j+1);
                fflush(stdin);
                scanf("%d", &carreras.caballos.id);

                printf("Ingrese jinete del caballo %d\n", j+1);
                fflush(stdin);
                gets(carreras.caballos.jinete);

                printf("Ingrese tiempo del caballo %d\n", j+1);
                fflush(stdin);
                scanf("%f", &carreras.caballos.tiempo);
            }
        }

        fwrite(&carreras, sizeof(carreras), 1, ptr);
    }
    fclose(ptr);

    printf("ingrese nombre del jinete a buscar\n");
    fflush(stdin);
    gets(jinete_opcion);

    if ((ptr = fopen("listado.txt", "r")) != NULL)
    {
        while ((!feof(ptr)) && (flag = 0))
        {
            fread(&carreras, sizeof(carreras), 1, ptr);
            if (strcmp(carreras.caballos.jinete, jinete_opcion) == 0)
                flag = 1;
        }
    }
    fclose(ptr);

    printf("El jinete es %s en el caballo con la id %d con un tiempo %f\n",
carreras.caballos.jinete, carreras.caballos.id, carreras.caballos.tiempo);

}
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20061129/21e47822/attachment.html>


Más información sobre la lista de distribución Cconclase