Hola, soy principiante en esto de programar, aunque hice en carrera, y ahora que tengo tiempo libre quiero aprender profundatemente.<div>Llevo días intentando resolver un problema, y no hay manera.</div><div>Tengo un fichero creado, donde se almacena la estructura palabra, donde dentro tiene 4 variables. Por tanto en el fichero voy escribiendo palabra palabra, y se van guardando bien. Puedo añadir una tras otra, las puedo consultar, etc. Lo que no puedo es: por ejemplo la palabra 3, que contiene sus 4 variables, quiero cambiar una de sus 4 variables. Se puede hacer? es que en ningun foro lo he encontrado, ni en paginas web d internet, ni en el libro de programacion que tengo. Solo se puede añadir, leer, escribir. He probado con el fwrite utilizando rb+, pero no me deja editar solo 1 variable, le digo de hacerlo, y m borra toda la palabra.</div>
<div>El objetivo del programa es crearme mi propia base de datos con palabras de ingles y su traduccion, y luego preguntarme las traducciones y responderlas, y ver si son correctas o no, en base a los datos que he guardado. Esto lo se hacer, lo que no consigo es: cada vez que aciertas, o fallas, almacenarlo en un contador. Aqui esta el problema. Cada vez, por ejemplo, que practico la palabra hello, y pongo hola. quiero que la variable contador de esa palabra se incremente en uno. pero las otras variables seguiran conteniendo hello y hola.</div>
<div>me podrian ayudar porfavor? en resumen, editar una estructura pero solo 1 campo de la estructura, previamente guardada en 1 fichero.</div><div>aqui va lo que yo he intentado:</div><div><br></div><div>el archivo fichero contiene palabras que con otro programa he ido introduciendo, por ejemplo</div>
<div><br></div><div>estructura 1:</div><div>castellano = hola</div><div>ingles = hello</div><div>tipo = nombre</div><div>cont.aciertos = 0 aqui esta l problema, quiero conseguir editarlo</div><div><br></div><div>codigo fuente:</div>
<div><br></div><div><div>#include <stdio.h></div><div><br></div><div>struct t_palabra {</div><div>       char castellano[30];</div><div>       char ingles[30];</div><div>       char tipo[30];</div><div>       int cont_aciertos;</div>
<div>       int cont_errores;</div><div>       };</div><div>       </div><div>       </div><div>int main (void)</div><div><br></div><div>{</div><div>    FILE *fichero;</div><div>    struct t_palabra palabra;</div><div>    int i;</div>
<div>    </div><div>    i=0;</div><div>    </div><div>    fichero = fopen ("datos.dat", "rb+");</div><div>    </div><div>    if (fichero == NULL)</div><div>       printf ("Error: No se ha podido abrir el fichero datos.dat.");</div>
<div>    </div><div>    else</div><div>    </div><div>    {</div><div>            fseek(fichero, i*sizeof(struct t_palabra), SEEK_SET);</div><div>            printf ("pon el nombre de aciertos que quieras: ");</div>
<div>            scanf("\n\n%d", &palabra.cont_aciertos);  </div><div>            </div><div>            fwrite (&palabra.cont_aciertos, sizeof(palabra.cont_aciertos), 1, fichero);</div><div>            fread (&palabra, sizeof(palabra), 1, fichero);</div>
<div>            printf ("\n%d", palabra.cont_aciertos);</div><div>            printf ("\n%s\t\t%s\t\t%s\t\t%d", palabra.castellano, palabra.ingles, palabra.tipo, palabra.cont_aciertos);</div><div>                     </div>
<div>            fclose (fichero);</div><div>    }</div><div><br></div><div>fflush(stdin);</div><div>printf("\n\nPulse Intro para finalizar...");</div><div>getchar();</div><div>            </div><div>}</div></div>