Diseño de diccionario pequeño
# include & ltconio.h & gt
# include & ltstdio.h & gt
# include & ltstdlib.h & gt
# include & ltstring.h & gt
#define szWORD 32
#define szSTRN 224
# define szITEM sizeof (struct TItem)
char fileDict[SZ strn];
elemento de estructura typedef{
char word[SZ word];
char media[SZ strn];
}item;
fpos_t búsqueda (char *palabra, char *media)
{
archivo* f = 0; primer elemento;
int r = 0; fpos_t p = 0;
si (!palabra) devuelve
f = fopen(fileDict, " Rb ");
si (!f) devuelve 0
mientras (!feof(f)) {
fgetpos (f) & amp; p);
r = fread(& amp; I, szITEM, 1, f
if (r & lt; 1) rompe la posición;
p>if(i.word[0] == 0) continuar;
if(strcmp(i.word, word)) continuar;
if(media) strcpy(media, I . media);
fclose(f
Devuelve p+1; p>fclose( f);
Devuelve 0;
}
void append (void)
{
Primer elemento; f = 0; fpos_t p = 0;
memset(&I,0,szITEM);
Printf("Ingrese una palabra:" ) ; scanf("%s ", I . palabra);
p = búsqueda (es decir, palabra, 0
if (p) {
Printf ("¡Esta palabra ha sido registrada en el diccionario! \ n ");
Regresar
}
Printf("Ingrese una definición, regrese; Fin del coche: ");
fflush(stdin);
gets(quiero decir);
f = fopen(fileDict, "ab");
fwrite(& I, szITEM, 1, f
fclose(f);
Printf("Entrada agregada\n ") ; p>
}
Borrado no válido (no válido)
{
Primer elemento; archivo * f = 0; fpos_t p = 0; >
memset(& I, 0, szITEM);
Printf("Ingrese una palabra:"); scanf("%s ", I . palabra);
p = lookup(es decir, palabra, 0);
if(p==0) {
Printf("No existe tal palabra en el diccionario ¡Registro! \n ");
Retorno;
}
p-;
memset(& I, 0, szITEM) ;<
/p>
f = fopen(fileDict, " r b+ ");
fset pos(f & amp;p;
fwrite(& amp;I, szITEM); , 1, f);
fclose(f);
Printf("Entrada eliminada\n "); Edición no válida (no válida)
{
Primer archivo * f = 0; fpos_t p = 0; );
Printf ("Ingrese una palabra:"); scanf ("%s ", I. palabra
p = búsqueda (es decir, palabra, 0);
if(p==0) {
Printf("¡No hay ningún registro de esta palabra en el diccionario!\n ");
Return
}
p-;
Printf("Ingrese una definición y presione Enter para finalizar (presione Enter para cancelar las modificaciones):"); >
fflush(stdin);
gets(quiero decir);
if(strstr str(es decir, "abortar"){
Printf( "¡Modificación cancelada! \ n ");
Return;
}
f = fopen(fileDict, " r b+ "); p>fset pos(f &p);
fwrite(&I,szITEM,1,f);
fclose(f);
Printf("Entrada guardada\n ");
}
Consulta no válida (nula)
{
Primer elemento fpos _; t p = 0;
memset(& amp;I, 0, szITEM);
Printf("Ingrese una palabra:"); scanf("%s ", I. palabra);
p = lookup(i.palabra, es decir);
if(p==0) {
Printf ("Hay ¡no hay registro de esta palabra en el diccionario! \ n ");
Retorno;
}
printf(" Entrada % s \ n interpretación % s " ,i.word,I.mean);
}
Conjunto no válido (no válido)
{
int cmd = 0;
Printf("El diccionario actual es %s, ¿necesita cambiarlo (seleccione Y o Y para cambiarlo)? ", fileDict);
cmd = getch();
if(cmd == 'y' || cmd == 'Y') {
Printf("Ingrese el nombre del archivo del diccionario (incluida la ruta):");
scanf("%s ", fileDict);
Printf("¡Se configuró correctamente!\n " ) ;
}
}
int main(int argc, char * argv[])
{
int cmd = 0;
if(argc & gt; 1)
strcpy(fileDict, argv[1]);
Otro
strcpy(fileDict, " c:\ \ dict . txt "
/*end if*/
for(;;) {
printf("\n\
* * *
* * * * * * * * * * * * * * * * * * * * * * \ n \
* *¡Bienvenido al mini diccionario! **\n\
* * * * * * * * * * * * * * * * * * * * * * * * * * \ n \
* * 0 -Configurar diccionario**\n\
* * 1-Término de consulta**\n\
* * 2-Nueva entrada**\n\
* * 3-Editar entrada**\n\
* * 4-Eliminar entrada**\n\
* * 5-Salir del diccionario**\n\ p>
* * * * * * * * * * * * * * * * * * * * * * * * * \ n ");
cmd = getch()- ' 0 ';
Cambiar (cmd) {
Caso 0: set();
Caso 1: consulta(); p>
Caso 2: append(); romper;
Caso 3: editar();
Caso 4: borrar();
Valor predeterminado: Devuelve 0
}
}
Devuelve 0;