Autor
|
Tema: [?] leer binario y guardar en struct dato AYUDA (Leído 9,878 veces)
|
nolosabe
Desconectado
Mensajes: 20
|
. Hola, disculpa la joda, pero estas funciones me dan buclevoid listarAnt() { struct dato aux; FILE *archivo; memset(&aux, 0x00, sizeof(struct dato)); archivo = fopen(DICCIONARIO, "rb"); if(archivo) { while(!feof(archivo)) if(fread(&aux, sizeof(struct dato), 1, archivo)) printf("Palabra: %s \nAntonimo: \n\t%s", aux.palabra, aux.antonimo); fclose(archivo); } } void listarPar() { struct dato aux; FILE *archivo; memset(&aux, 0x00, sizeof(struct dato)); archivo = fopen(DICCIONARIO, "rb"); if(archivo) { while(!feof(archivo)) if(fread(&aux, sizeof(struct dato), 1, archivo)) printf("Palabra: %s \nParonimo: \n\t%s", aux.palabra, aux.paronimo); fclose(archivo); } }
|
|
|
En línea
|
Gracias a todos por su ayuda, espero yo también ser de ayuda para alguien mas
|
|
|
rir3760
Desconectado
Mensajes: 1.639
|
Si tienes un problema debes describirlo de una forma clara, si solo indicas "me dan bucle" no nos ayudas. Si para empezar los datos se guardaron correctamente entonces esas funciones no deben generar errores, si modificaste el programa entonces por favor publica el código fuente completo. Ese par se puede reducir a: void listarAnt() { FILE *archivo; struct dato aux; if ((archivo = fopen (DICCIONARIO , "rb")) != NULL ){ while (fread (&aux , sizeof (struct dato ), 1, archivo ) == 1) printf ("Palabra: %s \nAntonimo: \n\t%s", aux. palabra, aux. antonimo); } } void listarPar() { FILE *archivo; struct dato aux; if ((archivo = fopen (DICCIONARIO , "rb")) != NULL ){ while (fread (&aux , sizeof (struct dato ), 1, archivo ) == 1) printf ("Palabra: %s \nParonimo: \n\t%s", aux. palabra, aux. paronimo); } }
Pero de nuevo lo que debes hacer es explicar en detalle el problema y presentar el código fuente modificado. Un saludo
|
|
|
En línea
|
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly. -- Kernighan & Ritchie, The C programming language
|
|
|
nolosabe
Desconectado
Mensajes: 20
|
YA ENCONTRE EL ERROR, ESTABA EN EL SUB MENU DONDE SE LLAMABA A LA FUNCION... ACA SE LOS DEJO void subMenu(){ clrscr(); int opc; char salir='n'; archivo =fopen(DICCIONARIO ,"rb"); if(archivo){ printf("\n Listar Palabras existentes \n"); printf("\n1) Listar antonimos"); printf("\n2) Listar paronimos"); printf("\n3) Listar: sinonimos, antonimos y paronimos"); printf("\n0) Volver al menu principal\n"); clrscr(); //EL ERROR ES TODO ESTO QUE ESTA while(salir!='s'){ //AFUERA DEL WHILE, EL GETCH ESTA AFUERA switch(opc){ //ENTONCES EL WHILE NO PARA PARA PEDIR SI QUIERES SALIR case '1': //listarAnt(); break; case '2': //listarPar(); break; case '3': //listarTodo(); break; case '0': salir='s'; break; default:printf("\n OPCION INCORRECTA"); break; }//Fin switch submenu }//fin while }//fin if else{ printf("\n OCURRIO UN ERROR AL ABRIR EL ARCHIVO"); }//fin else }//fin subMenu
|
|
« Última modificación: 12 Octubre 2011, 18:25 pm por nolosabe »
|
En línea
|
Gracias a todos por su ayuda, espero yo también ser de ayuda para alguien mas
|
|
|
|
El_Java
|
prueba poniendo algo como: if(aux.antonimo); //o tambien if(aux.antonimo[0] != '\0');
Un saludo.
|
|
« Última modificación: 12 Octubre 2011, 22:09 pm por El_Java »
|
En línea
|
|
|
|
rir3760
Desconectado
Mensajes: 1.639
|
En C no puedes comparar directamente dos cadenas. Como ya te indico El_Java debes verificar si el primer caracter de la cadena es diferente de '\0', solo si es asi la imprimes: if (aux.antonimo[0] != '\0'){ /* La cadena no esta vacia, la imprimes */ }
Un saludo
|
|
|
En línea
|
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly. -- Kernighan & Ritchie, The C programming language
|
|
|
nolosabe
Desconectado
Mensajes: 20
|
Muchas gracias a los 2! funciono: if(aux.antonimo[0] != '\0');
|
|
|
En línea
|
Gracias a todos por su ayuda, espero yo también ser de ayuda para alguien mas
|
|
|
nolosabe
Desconectado
Mensajes: 20
|
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 ); ok=1; } if(ok==1){ memset(&aux ,0x00,sizeof(struct dato )); archivo =fopen(DICCIONARIO ,"rb"); if(archivo!=NULL){ gotoxy(20,2); printf("ELIMINAR PALABRAS\n"); printf("\n Ingrese la palabra a eliminar: "); 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 ); 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 ); } } } }//if ok }//void
pero la verdad intente varias cosas y no me funciona bien, alguien me puede dar una mano por favor?
|
|
|
En línea
|
Gracias a todos por su ayuda, espero yo también ser de ayuda para alguien mas
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Leer archivos // Leer un dato en concreto
Programación C/C++
|
uhuru
|
3
|
3,537
|
22 Mayo 2010, 14:14 pm
por uhuru
|
|
|
Escribiendo un struct en un archivo en binario
Programación C/C++
|
skan
|
2
|
2,797
|
13 Agosto 2013, 22:04 pm
por skan
|
|
|
problema leer y guardar datos..
Programación C/C++
|
adrian123321
|
2
|
2,698
|
29 Agosto 2013, 08:57 am
por do-while
|
|
|
ayuda a guardar dato en php
PHP
|
General Dmitry Vergadoski
|
2
|
2,041
|
24 Diciembre 2013, 22:43 pm
por #Aitor
|
|
|
como ocultar un array o un dato de un struct
Programación C/C++
|
joshua_rock
|
1
|
2,401
|
23 Noviembre 2014, 01:00 am
por engel lex
|
|