elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Entrar al Canal Oficial Telegram de elhacker.net


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [?] leer binario y guardar en struct dato AYUDA
0 Usuarios y 2 Visitantes están viendo este tema.
Páginas: 1 [2] Ir Abajo Respuesta Imprimir
Autor Tema: [?] leer binario y guardar en struct dato AYUDA  (Leído 9,848 veces)
nolosabe

Desconectado Desconectado

Mensajes: 20



Ver Perfil
Re: [?] leer binario y guardar en struct dato AYUDA
« Respuesta #10 en: 11 Octubre 2011, 17:49 pm »

.

Hola, disculpa la joda, pero estas funciones me dan bucle



Código:
void 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 Desconectado

Mensajes: 1.639


Ver Perfil
Re: [?] leer binario y guardar en struct dato AYUDA
« Respuesta #11 en: 11 Octubre 2011, 18:35 pm »

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:
Código
  1. void listarAnt()
  2. {
  3.   FILE *archivo;
  4.   struct dato aux;
  5.  
  6.   if ((archivo = fopen (DICCIONARIO, "rb")) != NULL){
  7.      while (fread (&aux, sizeof (struct dato), 1, archivo) == 1)
  8.         printf ("Palabra: %s \nAntonimo: \n\t%s", aux.palabra, aux.antonimo);
  9.      fclose (archivo);
  10.   }
  11. }
  12.  
  13.  
  14. void listarPar()
  15. {
  16.   FILE *archivo;
  17.   struct dato aux;
  18.  
  19.   if ((archivo = fopen (DICCIONARIO, "rb")) != NULL){
  20.      while (fread (&aux, sizeof (struct dato), 1, archivo) == 1)
  21.         printf ("Palabra: %s \nParonimo: \n\t%s", aux.palabra, aux.paronimo);
  22.      fclose (archivo);
  23.   }
  24. }


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 Desconectado

Mensajes: 20



Ver Perfil
Re: [?] leer binario y guardar en struct dato AYUDA
« Respuesta #12 en: 11 Octubre 2011, 19:30 pm »

YA ENCONTRE EL ERROR, ESTABA EN EL SUB MENU DONDE SE LLAMABA A LA FUNCION... ACA SE LOS DEJO


Código
  1. void subMenu(){
  2. clrscr();
  3. int opc;
  4. char salir='n';
  5.  
  6. archivo=fopen(DICCIONARIO,"rb");
  7. if(archivo){
  8.  
  9. printf("\n Listar Palabras existentes \n");
  10.  
  11. printf("\n1) Listar antonimos");
  12. printf("\n2) Listar paronimos");
  13. printf("\n3) Listar: sinonimos, antonimos y paronimos");
  14. printf("\n0) Volver al menu principal\n");
  15. opc=getch();
  16. clrscr();                               //EL ERROR ES TODO ESTO QUE ESTA
  17. while(salir!='s'){                  //AFUERA DEL WHILE, EL GETCH ESTA AFUERA
  18. switch(opc){               //ENTONCES EL WHILE NO PARA PARA PEDIR SI QUIERES SALIR
  19.  
  20. case '1': //listarAnt();
  21. break;
  22. case '2': //listarPar();
  23. break;
  24. case '3': //listarTodo();
  25. break;
  26. case '0': salir='s';
  27. break;
  28. default:printf("\n OPCION INCORRECTA");
  29. getch();
  30. break;
  31. }//Fin switch submenu
  32. }//fin while
  33. }//fin if
  34. else{
  35. printf("\n OCURRIO UN ERROR AL ABRIR EL ARCHIVO");
  36. }//fin else
  37. }//fin subMenu
  38.  
« Ú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
nolosabe

Desconectado Desconectado

Mensajes: 20



Ver Perfil
Re: [?] leer binario y guardar en struct dato AYUDA
« Respuesta #13 en: 12 Octubre 2011, 18:43 pm »

Compañeros, tengo otra duda, supongamos que yo uso "fread(&aux,sizeof(struct dato),1,archivo);"

y quiero que imprima lo que queda guardado en cierto campo de "aux" si y solo si, ese campo no esta vacio...
como lo hago?
probe usando:
"if(aux.antonimo!=NULL){"
"if(aux.antonimo!=""){"
"if(aux.antonimo!="\0"){"
"if(aux.antonimo!="            "){"

Y ninguna de esas maneras me funciono... alguna sugerencia

recuerden que estoy leyendo desde un binario, lo guardo en struct dato aux y despues lo controlo de ahi

GRACIAS  ;D
En línea

Gracias a todos por su ayuda, espero yo también ser de ayuda para alguien mas
El_Java

Desconectado Desconectado

Mensajes: 144



Ver Perfil WWW
Re: [?] leer binario y guardar en struct dato AYUDA
« Respuesta #14 en: 12 Octubre 2011, 19:17 pm »

prueba poniendo algo como:
Código
  1. if(aux.antonimo);
  2. //o tambien
  3. if(aux.antonimo[0] != '\0');
  4.  
Un saludo.
« Última modificación: 12 Octubre 2011, 22:09 pm por El_Java » En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: [?] leer binario y guardar en struct dato AYUDA
« Respuesta #15 en: 12 Octubre 2011, 19:52 pm »

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:
Código
  1. if (aux.antonimo[0] != '\0'){
  2.   /* La cadena no esta vacia, la imprimes */
  3. }

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 Desconectado

Mensajes: 20



Ver Perfil
Re: [?] leer binario y guardar en struct dato AYUDA
« Respuesta #16 en: 12 Octubre 2011, 20:26 pm »

Muchas gracias a los 2!
funciono:
Código
  1. if(aux.antonimo[0] != '\0');
  2.  
En línea

Gracias a todos por su ayuda, espero yo también ser de ayuda para alguien mas
nolosabe

Desconectado Desconectado

Mensajes: 20



Ver Perfil
Re: [?] leer binario y guardar en struct dato AYUDA
« Respuesta #17 en: 29 Octubre 2011, 15:44 pm »

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:

Código
  1. void baja(){
  2. int encontrado=0,ok=0,posicion=0;
  3. struct dato aux;
  4. char palabra[20],opc='n';
  5. FILE *archivo;
  6. clrscr();
  7. archivo=fopen(DICCIONARIO,"rb");
  8. if(archivo!=NULL){
  9. fseek(archivo,0,SEEK_END);
  10. if(ftell(archivo)!=0)
  11. ok=1;
  12. fclose(archivo);
  13. }
  14. if(ok==1){
  15. memset(&aux,0x00,sizeof(struct dato));
  16. memset(&palabra,0x00,20);
  17. archivo=fopen(DICCIONARIO,"rb");
  18. if(archivo!=NULL){
  19. gotoxy(20,2);
  20. printf("ELIMINAR PALABRAS\n");
  21. printf("\n Ingrese la palabra a eliminar: ");
  22. scanf("%s",&palabra);
  23. strlwr(palabra);
  24. while(encontrado==0 && !feof(archivo)){
  25. fread(&aux,sizeof(struct dato),1,archivo);
  26. if(strcmp(palabra,aux.palabra)==0){
  27. encontrado=1;
  28. }//strcmp
  29. }//while
  30. clrscr();
  31. if(encontrado==1){
  32. printf("\n Esta seguro que desea eliminar \n la siguiente entrada del diccionario (s/n)\n");
  33. 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);
  34. }
  35. else{
  36. printf("\n No se encontro la palabra ingresada\n");
  37. }
  38. fseek(archivo,0,SEEK_END);
  39. posicion=ftell(archivo);
  40. fclose(archivo);
  41. opc=getch();
  42. if(opc=='s' || opc=='S'){
  43. archivo=fopen(DICCIONARIO,"rb+");
  44.       // fseek(archivo,0,SEEK_SET);
  45. while(ftell(archivo)<=posicion){
  46. fread(&aux,sizeof(struct dato),1,archivo);
  47. fseek(archivo,sizeof(struct dato)*(-2),SEEK_CUR);
  48. fwrite(&aux,sizeof(struct dato),1,archivo);
  49. fseek(archivo,sizeof(struct dato),SEEK_CUR);
  50.  
  51. }
  52. fclose(archivo);
  53. }
  54. } }//if ok
  55. }//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
Páginas: 1 [2] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Leer archivos // Leer un dato en concreto
Programación C/C++
uhuru 3 3,524 Último mensaje 22 Mayo 2010, 14:14 pm
por uhuru
Escribiendo un struct en un archivo en binario
Programación C/C++
skan 2 2,791 Último mensaje 13 Agosto 2013, 22:04 pm
por skan
problema leer y guardar datos..
Programación C/C++
adrian123321 2 2,689 Último mensaje 29 Agosto 2013, 08:57 am
por do-while
ayuda a guardar dato en php
PHP
General Dmitry Vergadoski 2 2,029 Último mensaje 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,395 Último mensaje 23 Noviembre 2014, 01:00 am
por engel lex
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines