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

 

 


Tema destacado: AIO elhacker.NET 2021 Compilación herramientas análisis y desinfección malware


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayuda
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda  (Leído 1,185 veces)
[ ]

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Ayuda
« en: 19 Junio 2014, 03:12 am »

Estoy desarrollando un programa que facture, estoy utilizando archivo y estructuras.

El asunto esta en que cuando trato de mostrar el inventario, la sección precio me muestra basura y no le consigo la vuelta

lo único que hace es guardar y mostrar los productos lo demás lo tengo aparte

código:
Código
  1. #include <stdio.h>
  2.  
  3.  
  4. typedef struct biblioteca{
  5.        int cod;
  6.  
  7.  
  8.        char nombre[10];
  9.       char editorial[15];
  10.       int precio;
  11.  
  12.        }libros;
  13.  
  14. libros crear(int i){
  15.         libros x;
  16.         x.cod=i;
  17.  
  18.  
  19.         printf("\nNombre del libro: ");
  20.         scanf("%s",&x.nombre);
  21.  
  22.  
  23.         printf("\nEditorial del libro: ");
  24.         scanf("%s",&x.editorial);
  25.  
  26.         printf("\nPrecio del libro: ");
  27.         scanf("%d",&x.precio);
  28.  
  29.         return x;
  30.         }
  31.  
  32. void guardar(FILE *p,libros x){
  33.  
  34. if(p=(fopen("Productos.txt","a+"))){
  35. fprintf(p,"%d %s %s %d\n",x.cod,x.nombre,x.editorial,x.precio);
  36. printf("\n PRODUCTOS GUARDADOS CORRECTAMENTE \n");
  37. fclose(p);
  38.  
  39.  
  40. }
  41. else printf("\n\n Error :( Algo salio mal! \n");
  42. }
  43.  
  44. void inventario(FILE *p){
  45.  
  46. libros aux;
  47. p=fopen("Productos.txt","r");
  48. if(p!=NULL){
  49.                printf("LISTA TOTAL DE LIBROS: \n\n");
  50. printf("%5s%15s%15s%10s\n\n","CODIGO","LIBRO", "EDITORIAL","CANTIDAD");
  51. while(feof(p)==0){
  52. fscanf(p,"%d %s %s %d\n",&aux.cod,aux.nombre,aux.editorial,aux.precio);
  53.  
  54. printf("%5d%15s%15s%10d\n",aux.cod,aux.nombre,aux.editorial,aux.precio);
  55. }
  56. fclose(p);
  57. }
  58. else printf("\n\nError :( Algo salio mal! NO HAY REGISTROS\n");
  59.  
  60.  
  61. }
  62.  
  63.  
  64. int main(){
  65. int ac,i=0;
  66.  
  67. FILE *p;
  68.    int opc;
  69.  
  70. do{
  71.       printf("\n\n\t..::BIENBENIDO AL SISTEMA::..\n\n");
  72.       printf("\n\n\t\t1.-Vender\n\t\t2.-Registrar cliente\n\t\t3.-Mostrar inventario\n\t\t4.-Agregar libro\n\t\t0.-Salir\n\n\n");
  73.       scanf("%d",&opc);
  74.       system("cls");
  75.       if(opc==3){        
  76.                   inventario(p);
  77.  
  78.   }
  79.       if(opc==4){
  80.                   i++;
  81.   guardar(p,crear(i));
  82.                   }
  83. }while(opc!=0);
  84.  
  85. }
  86.  

gracias de antemano!   :)


« Última modificación: 19 Junio 2014, 04:02 am por simorg » En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.937


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Ayuda
« Respuesta #1 en: 19 Junio 2014, 10:32 am »

Fijate que hay una diferencia clave entre cuando llamas a scanf y fscanf, en una estas pasandole la direccion de precio y en otra su valor.

PD. El uso de p en main no tiene utilidad ni sentido tal y como esta (actua como variable local en las funciones guardar e inventario).


« Última modificación: 19 Junio 2014, 10:40 am por Eternal Idol » En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines