Tengo el siguiente codigo.<br>Lo que quiero es que depsues de llenar las estructuras, poder encontrar el caballo buskandolo por el jinete, osea una komparacion de strings.<br>Al haver fread esta mi consulta. Se hace fread hasta ke el flag sea 1 o se llegue a fin de pagina.
<br>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.
<br><br><br><br>#include <stdio.h><br>#include <string.h><br><br>#define MAX 100<br>#define n_carr 2<br>#define n_cab 2<br><br><br>struct caballo<br>{<br>    int id;<br>    char jinete[MAX];<br>    float tiempo;
<br>};<br><br>struct carrera<br>{<br>    int numero;<br>    int id_ganador;<br>    struct caballo caballos;<br>}carreras;<br><br>    <br><br>int main()<br>{<br>    FILE *ptr;<br>    char jinete_opcion[MAX];<br>    int j,i;
<br>    int flag = 0;<br><br><br>    if ((ptr = fopen("listado.txt", "w")) != NULL)<br>    {<br>        for(i=0; i<n_carr; i++)<br>        {<br>            printf("Ingrese numero carrera\n");
<br>            fflush(stdin);<br>            scanf("%d", &carreras.numero);<br><br>            printf("Ingrese id del ganador\n");<br>            fflush(stdin);<br>            scanf("%d", &carreras.id_ganador);
<br><br>            for(j=0; j<n_cab; j++)<br>            {<br>                printf("Ingrese id caballo %d\n", j+1);<br>                fflush(stdin);<br>                scanf("%d", &carreras.caballos.id);
<br><br>                printf("Ingrese jinete del caballo %d\n", j+1);<br>                fflush(stdin);<br>                gets(carreras.caballos.jinete);<br><br>                printf("Ingrese tiempo del caballo %d\n", j+1);
<br>                fflush(stdin);<br>                scanf("%f", &carreras.caballos.tiempo);<br>            }<br>        }<br><br>        fwrite(&carreras, sizeof(carreras), 1, ptr);<br>    }<br>    fclose(ptr);
<br>    <br>    printf("ingrese nombre del jinete a buscar\n");<br>    fflush(stdin);<br>    gets(jinete_opcion);<br><br>    if ((ptr = fopen("listado.txt", "r")) != NULL)<br>    {<br>        while ((!feof(ptr)) && (flag = 0))
<br>        {<br>            fread(&carreras, sizeof(carreras), 1, ptr);<br>            if (strcmp(carreras.caballos.jinete, jinete_opcion) == 0)<br>                flag = 1;<br>        }<br>    }<br>    fclose(ptr);<br>
<br>    printf("El jinete es %s en el caballo con la id %d con un tiempo %f\n", carreras.caballos.jinete, <a href="http://carreras.caballos.id">carreras.caballos.id</a>, carreras.caballos.tiempo);<br><br>}<br><br>
<br><br><br>