Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: juan228 en 5 Mayo 2015, 19:17 pm



Título: Problemas con fwrite
Publicado por: juan228 en 5 Mayo 2015, 19:17 pm
Hola! Les comento, lo que tiene que hacer el programa es grabar productos dentro de un archivo y listo. El tema esta en que me graba todo MENOS el cod_art y no entiendo por que!

Les dejo el codigo para que puedan verlo

Código
  1. #include <stdio.h>
  2. #include <conio.h>
  3. #include <stdlib.h>
  4. #define DIR "productos.txt"
  5.  
  6. typedef struct{int cod_art; float peso; char nombre[15], desc[120];}t_producto;
  7.  
  8. int main()
  9. {
  10. t_producto producto;
  11. FILE *pf;
  12. char opc;
  13.  
  14. if((pf=fopen(DIR,"w"))==NULL)
  15. {
  16. printf("\nEl Archivo no puede ser abierto");
  17. exit(1);
  18. }
  19.  
  20. printf("Ingresar un Articulo nuevo (s/n)?: ");
  21. opc=getche();
  22. while(opc=='s')
  23. {
  24. printf("\nIngresar Codigo del Articulo: ");
  25. fflush(stdin);
  26. scanf("%d", &producto.cod_art);
  27. printf("Ingresar Nombre del Articulo: ");
  28. fflush(stdin);
  29. gets(producto.nombre);
  30. printf("Ingresar Descripcion del Articulo: ");
  31. fflush(stdin);
  32. gets(producto.desc);
  33. printf("Ingresar Peso del Articulo: ");
  34. scanf("%f", &producto.peso);
  35. fwrite(&producto,sizeof(producto),1,pf);
  36. printf("\nIngresar un Articulo nuevo (s/n)?: ");
  37. opc=getche();
  38. }
  39. fclose(pf);
  40. return (1);
  41. }


Título: Re: Problemas con fwrite
Publicado por: engel lex en 5 Mayo 2015, 19:21 pm
wow! vengo es por lo que no se debe hacer... cumples la lista casi completa

https://foro.elhacker.net/programacion_cc/lo_que_no_hay_que_hacer_en_cc_nivel_basico-t277729.0.html (https://foro.elhacker.net/programacion_cc/lo_que_no_hay_que_hacer_en_cc_nivel_basico-t277729.0.html)

arregla eso, no vaya a ser un conflicto con fflush(stdin)


Título: Re: Problemas con fwrite
Publicado por: juan228 en 5 Mayo 2015, 19:41 pm
wow! vengo es por lo que no se debe hacer... cumples la lista casi completa

https://foro.elhacker.net/programacion_cc/lo_que_no_hay_que_hacer_en_cc_nivel_basico-t277729.0.html (https://foro.elhacker.net/programacion_cc/lo_que_no_hay_que_hacer_en_cc_nivel_basico-t277729.0.html)

arregla eso, no vaya a ser un conflicto con fflush(stdin)

Primero que nada gracias y buena foto de DW :P jajaj

Con respecto al tema de los fflush, solo los pongo antes del ingreso de cadenas, en caso de sacarlo me saltea todo, es decir me hace esto:

Ingrese Codigo: 0000
Ingrese Nombre:
Ingrese Descripcion: _

Es decir me saltea uno, por eso los pongo...

Tenes alguna idea de por que el unico dato que no me considera es el primero??


Título: Re: Problemas con fwrite
Publicado por: engel lex en 5 Mayo 2015, 19:43 pm
leiste el link, hiciste los cambios respectivos y no funcionó?

intentaste hacer debug?

primero prueba las soluciones, luego responde con tus resultados...


Título: Re: Problemas con fwrite
Publicado por: juan228 en 5 Mayo 2015, 20:01 pm
leiste el link, hiciste los cambios respectivos y no funcionó?

intentaste hacer debug?

primero prueba las soluciones, luego responde con tus resultados...

Si, te los enumero:

  • gets(); | Si lo saco y uso un scanf no solo que no noto cambios sino que tampoco puedo escribir cadena de caracteres separados por espacios.
  • fflush(stdin); | Si saco los fflush que se encuentran antes de los gets (o scanf segun el caso) me saltea como te dije antes
  • conio.h | Lo uso para el getche(); en el peor de los casos, lo saco y pongo un scan pero eso no falla

A que te referis con debug ?


Título: Re: Problemas con fwrite
Publicado por: engel lex en 5 Mayo 2015, 20:16 pm
:¬¬ en el tema no es un queja... está la solución para cada caso...

deja conio.h (aunque hay soluciones para ello) cambia los otros 2... teóricamente si cambias el gets, no necesitas fflush