Usando el codigo que me dieron en la primer respuesta, quiero hacer una funcion para eliminar palabras que no sea del estilo que esta en ese codigo, sino que sea algo asi:
void baja(){
int encontrado=0,ok=0,posicion=0;
struct dato aux;
char palabra[20],opc='n';
FILE *archivo;
clrscr();
archivo=fopen(DICCIONARIO,"rb");
if(archivo!=NULL){
fseek(archivo,0,SEEK_END);
if(ftell(archivo)!=0)
ok=1;
fclose(archivo);
}
if(ok==1){
memset(&aux,0x00,sizeof(struct dato));
memset(&palabra,0x00,20);
archivo=fopen(DICCIONARIO,"rb");
if(archivo!=NULL){
gotoxy(20,2);
printf("ELIMINAR PALABRAS\n");
printf("\n Ingrese la palabra a eliminar: ");
scanf("%s",&palabra);
strlwr(palabra);
while(encontrado==0 && !feof(archivo)){
fread(&aux,sizeof(struct dato),1,archivo);
if(strcmp(palabra,aux.palabra)==0){
encontrado=1;
}//strcmp
}//while
clrscr();
if(encontrado==1){
printf("\n Esta seguro que desea eliminar \n la siguiente entrada del diccionario (s/n)\n");
printf("\n Palabra: %s \n Sinonimos: %s %s %s\n Antonimo: %s\n Paronimo: %s\n",aux.palabra,aux.sinonimo1,aux.sinonimo2,aux.sinonimo3,aux.antonimo,aux.paronimo);
}
else{
printf("\n No se encontro la palabra ingresada\n");
}
fseek(archivo,0,SEEK_END);
posicion=ftell(archivo);
fclose(archivo);
opc=getch();
if(opc=='s' || opc=='S'){
archivo=fopen(DICCIONARIO,"rb+");
// fseek(archivo,0,SEEK_SET);
while(ftell(archivo)<=posicion){
fread(&aux,sizeof(struct dato),1,archivo);
fseek(archivo,sizeof(struct dato)*(-2),SEEK_CUR);
fwrite(&aux,sizeof(struct dato),1,archivo);
fseek(archivo,sizeof(struct dato),SEEK_CUR);
}
fclose(archivo);
}
} }//if ok
}//voidpero la verdad intente varias cosas y no me funciona bien, alguien me puede dar una mano por favor?