A ver si te sirve... Si lo ves complicado te explico lo que tengas duda XD
Código C:
Ver original#include <stdio.h>
#include <string.h>
#include <windows.h>
typedef struct {
char marcado;
char ingles[30];
char espaniol[30];
} Traductor;
int main () {
FILE* ptrFile;
ptrFile
= fopen ( "archivo.txt", "w+" ); char buscado[30];
if ( ptrFile == NULL ) {
printf ( "No ha sido posible abrir archivo.txt" ); return 1;
}
Traductor temp;
Traductor t[5] = {
{ 0, "door", "puerta"},
{ 0, "window", "ventana"},
{ 0, "rueda", "wheel"},
{ 0, "main", "principal"},
{ 0, "out", "salida"}
};
//Nos genera un archivo con el contenido de t ya que abrimos con el atributo w+, asi nos centramos
//solo en su funcionamiento =). Tambien podemos escribir en el...El puntero siempre estará al final tras escribir en el.
fwrite ( t
, sizeof ( Traductor
) * 5, 1, ptrFile
);
printf ( " Entre con una palabra en ingles a buscar en el\nregistro(La palabra debe existir en la estructura t, o no XD ).\n" ); scanf ( "%29[^\n]%*c", buscado
);
long nRegistros;
fseek ( ptrFile
, 0, SEEK_END
); // Colocar el cursor al final del fichero nRegistros
= ftell ( ptrFile
) / sizeof ( Traductor
); // Tamaño en registros printf ( "Hay %d registros en el fichero.\n", nRegistros
);
int contador = 0;
while ( fread ( &temp
, sizeof ( Traductor
), 1, ptrFile
) ) { //Si la palabra existe en el fichero
if ( strcmp ( temp.
ingles, buscado
) == 0 ) { strcpy(temp.
ingles, "CAMBIADO!INGLES"); //si encontramos la palabra ponemos eso en su lugar XD
printf ( "\nLa palabra esta en el registro numero %d del fichero\n", contador
+1 );
fseek(ptrFile
, sizeof ( Traductor
)*contador
, SEEK_SET
);
fwrite ( &temp
, sizeof ( Traductor
), 1, ptrFile
); break;
}
contador ++;
//Si la palabra NO existe en el fichero
if ( contador == nRegistros ){
printf("\nLa palabra no se encuentra en ninguno de los %d registros del fichero\n", nRegistros
); break;
}
}
return 0;
}
Suerte XD