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

 

 


Tema destacado: Tutorial básico de Quickjs


  Mostrar Mensajes
Páginas: 1 [2]
11  Programación / Programación C/C++ / Re: [?] leer binario y guardar en struct dato AYUDA 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
12  Programación / Programación C/C++ / Re: [?] leer binario y guardar en struct dato AYUDA 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.  
13  Programación / Programación C/C++ / Re: [?] leer binario y guardar en struct dato AYUDA 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);
        }
}
14  Programación / Programación C/C++ / Re: [?] leer binario y guardar en struct dato AYUDA en: 9 Octubre 2011, 04:36 am
Disculpa, cuando hago el void consulta
struct dato aux;

en donde lo uso con memset(&aux,0x00,sizeof(struct dato));
me dice improper use of typedef aux
______________________

EDIT:
SOLUCIONADO fue un error mio de tipeo
15  Programación / Programación C/C++ / Re: [?] leer binario y guardar en struct dato AYUDA en: 7 Octubre 2011, 23:10 pm
Gracias, me fue de MUCHÍSIMA ayuda, lo voy a utilizar para crear el código de este trabajo por mi mismo y para los próximos.

 ;D
16  Programación / Programación C/C++ / Re: [?] leer binario y guardar en struct dato AYUDA en: 7 Octubre 2011, 21:21 pm
Bueno, tengo un par de preguntas para entender mejor el funcionamiento del programa, espero no ser pesado.

¿si yo en una función pongo "struct dato aux" la estructura aux va a tener todo lo mismo que la que declare arriba afuera del main?

en el siguiente caso " if(ok)"¿cuando se cumple el if, cuando es 0 o cuando es otro valor distinto a 0 o cuando?

¿y en este caso
"archivo = fopen(DICCIONARIO, "rb");
if(archivo)"
cuando se cumple el if y cuando no?

¿que significa esto?
 while(!enc && !feof(archivo))


disculpen tantas preguntas es que nosotros nunca usamos una sintaxis asi en nuestro curso, imagino que asi es mejor, es ams rapido, mas corto, por eso me gustaria entenderlo y aprenderlo, se que vamos atrasados en el curso, pero alguna vez hay que empezar, ya llegara el dia que vamos a saber mas, yo y mis compañeros

GRACIAS :D
17  Programación / Programación C/C++ / Re: [?] leer binario y guardar en struct dato AYUDA en: 7 Octubre 2011, 02:07 am
Disculpa/disculpen las molestias pero quisiera saber como funciona "memset" ya que ese comando no nos lo enseñaron, por eso utilizo fread y fwrite, y no puedo usar un comando que no nos hayan enseñado a no ser que sepa como funciona y lo entienda, la idea aquí no es que yo copie esto, sino que lo utilice como una manera de aprender y ahora quisiera poder tomar esto que tu has escrito y hacerlo con los comandos que nos enseñaron en el instituto :)
18  Programación / Programación C/C++ / Re: [?] leer binario y guardar en struct dato AYUDA en: 7 Octubre 2011, 01:57 am
Ok, lo voy a revisar y veré que puedo hacer por mi cuenta con los comandos que nos han enseñado, muchas gracias por tu tiempo y por la ayuda :D
19  Programación / Programación C/C++ / [?] leer binario y guardar en struct dato AYUDA en: 6 Octubre 2011, 22:43 pm
tengo un codigo que hice de un diccionario, pero trao y trato y no me sale el tema de que el usuario ingrese una cadena y el programa la busque en el archivo y la almacene en el "struct dato"...
les paso el codigo

Código:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
 
void alta(int);
/*void baja();
void modificar();
void consultar();
void listarSin(int);
void listarAnt();
void listarPar();*/
void subMenu();
int total();
 
#define LARGO 100
#define DICCIONARIO "c:\dicc.bin"
 
struct dato{
char palabra[20];
char sinonimo1[20],sinonimo2[20],sinonimo3[20];
char antonimo[20];
char paronimo[20];
int borrado;
}diccionario[LARGO];
 
FILE *archivo = NULL;
 
void main(){
int opcion=0,pos=total();
char salir='n';
while (salir!='s'){
clrscr();
printf("\n   DICCIONARIO \n");
printf("1) Ingresar \n");
printf("2) Eliminar \n");
printf("3) Modificar \n");
printf("4) Consultar \n");
printf("5) Listar \n");
printf("0) Salir \n");
opcion=getch();
switch(opcion){
case '1': pos=total();
pos++;
alta(pos);
break;
case '2': //baja();
break;
case '3': //modificar();
break;
case '4': //consultar();
break;
case '5': subMenu();
break;
case '0': printf("\n &#168;Esta seguro que desea salir? (s/n)");
salir=getch();
clrscr();
break;
default:printf("\n opcion incorrecta");
getch();
clrscr();
break;
}//fin switch
}//fin while
}//fin void main
 
 
 
void subMenu(){
clrscr();
int opc;
char salir='n';
printf("\n Listar Palabras existentes \n");
printf("\n1) Listar sinonimos");
printf("\n2) Listar antonimos");
printf("\n3) Listar paronimos");
printf("\n4) Listar: sinonimos, antonimos y paronimos");
printf("\n0) Volver al menu principal");
opc=getch();
clrscr();
while(salir!='s'){
switch(opc){
case '1': //listarSin();
break;
case '2': //listarAnt();
break;
case '3': //listarPar();
break;
case '4': //listarSin();
//listarAnt();
//listarPar();
break;
case '0': printf("\n &#168;Desea volver al menu principal (s/n)?");
salir=getch();
break;
default:printf("\n OPCION INCORRECTA");
getch();
break;
}//Fin switch submenu
}//fin while
}//fin subMenu
 
 
int total(){
clrscr();
int total;
archivo=NULL;
archivo=fopen(DICCIONARIO,"rb");//abro el archivo diccionario.bin como solo lectura
if(archivo==NULL){
printf("\n Error al abrir el archivo");
fclose(archivo);
}
else{
fseek(archivo,0,SEEK_END);
total=ftell(archivo) / sizeof(struct dato);//divido el tama&#164;o del archivo entre el tama&#164;o de la estructura para saber cuantas hay
}
return total;//devuelvo el valor de la variable total(int)
}
 
void alta(int pos){
char opc=' ',confirmar=' ';
archivo=NULL;
clrscr();
printf("\n Ingresar palabra/s \n");
printf("\n Palabra: ");
gets(diccionario[pos].palabra);
clrscr();
printf("\n &#168;Desea ingresar un sinonimo? (s/n)");
opc='a';
// while(opc!='s' || opc!='n'){
opc=getch();
if(opc=='s'){
clrscr();
printf("ingrese un sinonimo: ");
gets(diccionario[pos].sinonimo1);
opc=' ';
clrscr();
printf("\n&#168;Desea ingresar otro sinonimo? (s/n)");
opc=getch();
if(opc=='s'){
clrscr();
printf("ingrese otro sinonimo: ");
gets(diccionario[pos].sinonimo2);
opc=' ';
clrscr();
printf("\n&#168;Desea ingresar otro sinonimo? (s/n)");
opc=getch();
if(opc=='s'){
clrscr();
printf("ingrese otro sinonimo: ");
gets(diccionario[pos].sinonimo3);
}//if3
}//if2
}//if1
// }//while
 
clrscr();
printf(" Ingrese un antonimo: ");
gets(diccionario[pos].antonimo);
printf("\n Ingrese un paronimo o presione enter para no ingresar nada: ");
gets(diccionario[pos].paronimo);
clrscr();
printf(" Usted ingreso\n");
printf("\n\n Palabra: %s \n Sinonimos: %s, %s, %s\n Antonimo: %s\n Paronimo: %s",diccionario[pos].palabra,diccionario[pos].sinonimo1,diccionario[pos].sinonimo2,diccionario[pos].sinonimo3,diccionario[pos].antonimo,diccionario[pos].paronimo);
printf("\n\n Esta seguro que desea agregar estos datos al diccionario(s/n)");
confirmar=getch();
if(confirmar=='n'){
printf("\n Los datos no se escribieron en el archivo");
}//IF
else{ if(confirmar=='s'){
archivo=fopen(DICCIONARIO,"ab+");
fwrite(&diccionario[pos],sizeof(struct dato),1,archivo);
fclose(archivo);
}//if
}//else
}//funcion
20  Programación / Programación C/C++ / [Ayuda]Diccionario de sinonimos, antonimos, paronimos en C en: 5 Octubre 2011, 20:09 pm
Hola, soy nuevo en el foro, y necesito ayuda con un programa que me mandaron como proyecto para el instituto en el que tengo que crear un programa que guarde palabras, varios sinonimos, un solo antonimo y un solo paronimo... tiene que tener un menu que permita al usuario agregar palabras (altas) dar de baja palabras, modificar (por errores ortograficos), consultar una palabra, y listar todas.

estoy trancado con el tema de los archivos binarios.. no tengo idea del tema porque falte a clase ya que estaba enfermo.
les dejo lo que tengo hecho hasta ahora, hay funciones que las tengo con // porque aun no estan declaradas... me tira como 8 errores, a ver si me pueden auxiliar.

MUCHAS GRACIAS

ARREGLE EL CODIGO, PERO SI ME PUEDEN AYUDAR CON ALGUNA DE LAS FUNCIONES QUE ME FALTAN POR HACER LES AGRADEZCO

Código
  1. #include <stdio.h>
  2. #include <conio.h>
  3. #include <stdlib.h>
  4. #include <string.h>
  5.  
  6. void alta(int);
  7. /*void baja();
  8. void modificar();
  9. void consultar();
  10. void listarSin(int);
  11. void listarAnt();
  12. void listarPar();*/
  13. void subMenu();
  14. int total();
  15.  
  16. #define LARGO 100
  17. #define DICCIONARIO "c:\dicc.bin"
  18.  
  19. struct dato{
  20. char palabra[20];
  21. char sinonimo1[20],sinonimo2[20],sinonimo3[20];
  22. char antonimo[20];
  23. char paronimo[20];
  24. int borrado;
  25. }diccionario[LARGO];
  26.  
  27. FILE *archivo = NULL;
  28.  
  29. void main(){
  30. int opcion=0,pos=total();
  31. char salir='n';
  32. while (salir!='s'){
  33. clrscr();
  34. printf("\n   DICCIONARIO \n");
  35. printf("1) Ingresar \n");
  36. printf("2) Eliminar \n");
  37. printf("3) Modificar \n");
  38. printf("4) Consultar \n");
  39. printf("5) Listar \n");
  40. printf("0) Salir \n");
  41. opcion=getch();
  42. switch(opcion){
  43. case '1': pos=total();
  44. pos++;
  45. alta(pos);
  46. break;
  47. case '2': //baja();
  48. break;
  49. case '3': //modificar();
  50. break;
  51. case '4': //consultar();
  52. break;
  53. case '5': subMenu();
  54. break;
  55. case '0': printf("\n &#168;Esta seguro que desea salir? (s/n)");
  56. salir=getch();
  57. clrscr();
  58. break;
  59. default:printf("\n opcion incorrecta");
  60. getch();
  61. clrscr();
  62. break;
  63. }//fin switch
  64. }//fin while
  65. }//fin void main
  66.  
  67.  
  68.  
  69. void subMenu(){
  70. clrscr();
  71. int opc;
  72. char salir='n';
  73. printf("\n Listar Palabras existentes \n");
  74. printf("\n1) Listar sinonimos");
  75. printf("\n2) Listar antonimos");
  76. printf("\n3) Listar paronimos");
  77. printf("\n4) Listar: sinonimos, antonimos y paronimos");
  78. printf("\n0) Volver al menu principal");
  79. opc=getch();
  80. clrscr();
  81. while(salir!='s'){
  82. switch(opc){
  83. case '1': //listarSin();
  84. break;
  85. case '2': //listarAnt();
  86. break;
  87. case '3': //listarPar();
  88. break;
  89. case '4': //listarSin();
  90. //listarAnt();
  91. //listarPar();
  92. break;
  93. case '0': printf("\n &#168;Desea volver al menu principal (s/n)?");
  94. salir=getch();
  95. break;
  96. default:printf("\n OPCION INCORRECTA");
  97. getch();
  98. break;
  99. }//Fin switch submenu
  100. }//fin while
  101. }//fin subMenu
  102.  
  103.  
  104. int total(){
  105. clrscr();
  106. int total;
  107. archivo=NULL;
  108. archivo=fopen(DICCIONARIO,"rb");//abro el archivo diccionario.bin como solo lectura
  109. if(archivo==NULL){
  110. printf("\n Error al abrir el archivo");
  111. fclose(archivo);
  112. }
  113. else{
  114. fseek(archivo,0,SEEK_END);
  115. total=ftell(archivo) / sizeof(struct dato);//divido el tama&#164;o del archivo entre el tama&#164;o de la estructura para saber cuantas hay
  116. }
  117. return total;//devuelvo el valor de la variable total(int)
  118. }
  119.  
  120. void alta(int pos){
  121. char opc=' ',confirmar=' ';
  122. archivo=NULL;
  123. clrscr();
  124. printf("\n Ingresar palabra/s \n");
  125. printf("\n Palabra: ");
  126. gets(diccionario[pos].palabra);
  127. clrscr();
  128. printf("\n &#168;Desea ingresar un sinonimo? (s/n)");
  129. opc='a';
  130. // while(opc!='s' || opc!='n'){
  131. opc=getch();
  132. if(opc=='s'){
  133. clrscr();
  134. printf("ingrese un sinonimo: ");
  135. gets(diccionario[pos].sinonimo1);
  136. opc=' ';
  137. clrscr();
  138. printf("\n&#168;Desea ingresar otro sinonimo? (s/n)");
  139. opc=getch();
  140. if(opc=='s'){
  141. clrscr();
  142. printf("ingrese otro sinonimo: ");
  143. gets(diccionario[pos].sinonimo2);
  144. opc=' ';
  145. clrscr();
  146. printf("\n&#168;Desea ingresar otro sinonimo? (s/n)");
  147. opc=getch();
  148. if(opc=='s'){
  149. clrscr();
  150. printf("ingrese otro sinonimo: ");
  151. gets(diccionario[pos].sinonimo3);
  152. }//if3
  153. }//if2
  154. }//if1
  155. // }//while
  156.  
  157. clrscr();
  158. printf(" Ingrese un antonimo: ");
  159. gets(diccionario[pos].antonimo);
  160. printf("\n Ingrese un paronimo o presione enter para no ingresar nada: ");
  161. gets(diccionario[pos].paronimo);
  162. clrscr();
  163. printf(" Usted ingreso\n");
  164. printf("\n\n Palabra: %s \n Sinonimos: %s, %s, %s\n Antonimo: %s\n Paronimo: %s",diccionario[pos].palabra,diccionario[pos].sinonimo1,diccionario[pos].sinonimo2,diccionario[pos].sinonimo3,diccionario[pos].antonimo,diccionario[pos].paronimo);
  165. printf("\n\n Esta seguro que desea agregar estos datos al diccionario(s/n)");
  166. confirmar=getch();
  167. if(confirmar=='n'){
  168. printf("\n Los datos no se escribieron en el archivo");
  169. }//IF
  170. else{ if(confirmar=='s'){
  171. archivo=fopen(DICCIONARIO,"ab+");
  172. fwrite(&diccionario[pos],sizeof(struct dato),1,archivo);
  173. fclose(archivo);
  174. }//if
  175. }//else
  176. }//funcion
:?:
Páginas: 1 [2]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines