<div>Que tal Albert, creo que el detalle podría estar en el "fseek", por lo que veo el cursor se está posicionando en el primer byte de tu estructura (en este primer byte inicia el contenido de la variable "castellano") y ahí mismo estas tratando de escribir el contenido de la variable "cont_aciertos".</div>

<div><br></div><div>Podrias probar con hacer:</div><div><br></div><div><span style="font-family:'courier new',monospace">   //esto mueve el cursor al inicio de la estructura (done inicia "castellano")</span></div>

<div><font face="'courier new', monospace">   fseek(fichero, i*sizeof(struct t_palabra), SEEK_SET);</font></div><div><font face="'courier new', monospace"><br></font></div><div><span style="font-family:'courier new',monospace">   //esto mueve el cursor a donde inicia la variable "ingles"</span></div>

<div><font face="'courier new', monospace">   fseek(fichero, 30 * sizeof(char), <b>SEEK_CUR</b>); </font></div><div><span style="font-family:'courier new',monospace"><br></span></div><div><span style="font-family:'courier new',monospace">   //esto mueve el cursor a donde inicia la variable "tipo"</span></div>

<div><font face="'courier new', monospace">   fseek(fichero, 30 * sizeof(char), <b>SEEK_CUR</b>);</font></div><div><font face="'courier new', monospace"><br></font></div><div><span style="font-family:'courier new',monospace">   //esto mueve el cursor a donde inicia la variable "</span><span style="font-family:'courier new',monospace">cont_aciertos</span><span style="font-family:'courier new',monospace">"</span></div>

<div><font face="'courier new', monospace">   fseek(fichero, 30 * sizeof(char), <b>SEEK_CUR</b>);</font></div><div><br></div><div>y creo que si después de estas líneas haces el "fwrite" ya escribiría en la posición que le corresponde y antes de leer nuevamente la estructura tendrías que regresar la posición con "fseek".</div>

<div><br></div><div>Siempre existe la otra opción de que una vez ubicado en la primer posición de la estructura reescribir la estructura completa.</div><div><br></div><div>Espero haberte ayudado en algo.</div><div><br></div>

<div>Saludos,</div><div>Miguel.</div><div><br><br><div class="gmail_quote">2012/1/5 Albert Montolio <span dir="ltr"><<a href="mailto:albert.montolio@gmail.com">albert.montolio@gmail.com</a>></span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

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>


<br>_______________________________________________<br>
Lista de correo Cconclase <a href="mailto:Cconclase@listas.conclase.net">Cconclase@listas.conclase.net</a><br>
<a href="http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net" target="_blank">http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net</a><br>
Bajas: <a href="http://listas.conclase.net/index.php?gid=2&mnu=FAQ" target="_blank">http://listas.conclase.net/index.php?gid=2&mnu=FAQ</a><br></blockquote></div><br></div>