Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: SonaArtica en 11 Diciembre 2012, 04:29 am



Título: Grabo archivo y no lo veo creado,en C,Borland C++ 5.02
Publicado por: SonaArtica en 11 Diciembre 2012, 04:29 am
Bueno antes de todo quiero aclarar:
- Es LENGUAJE C
- Utilizo el Compilador Borland C++ 5.02

PROBLEMA: Guardo el archivo pf.txt en una carpeta de mi disco D. El programa funciona perfecto, el unico inconveniente es que cuando voy a la dirección física donde tendría que estar el archivo que había creado !NO APARECE  >:( !
Les dejo el código:
Código
  1. #include <stdio.h>
  2. #include <conio.h>
  3. #include <stdlib.h>
  4.  
  5. //Estructura cn datos de Productos
  6. struct producto{
  7. int na; //Numero de Articulo
  8.               char a[12]; //Nombre de Articulo
  9.               char d[50]; //Descripcion del Articulo
  10.               float pu; //Precio por Unidad
  11.               int stock; //Stock de Articulo
  12.               };
  13. main(){
  14. int i;
  15. struct producto arti;
  16. FILE *pf;
  17. pf=fopen("D:\Super\pf.txt","wb");
  18. //Comprobacion del Acceso
  19. if(pf==NULL){
  20.             printf("NO SE PUEDE ACCEDER \n");
  21.             getch();
  22.             exit(1);
  23.             }
  24. printf("Ingrese Numero del Articulo a Registrar \n");
  25. scanf(" %d",&arti.na);
  26. while(arti.na){
  27.  fflush(stdin);
  28.                 printf("Ingrese Nombre del Articulo \n");
  29.                 gets(arti.a);
  30.                 printf("Ingrese la Descripcion del Articulo \n");
  31.                 gets(arti.d);
  32.                 printf("Ingrese el Precio por Unidad\n");
  33.                 scanf(" %f",&arti.pu);
  34.                 printf("Ingrese el STOCK de articulos \n");
  35.                 scanf(" %d",&arti.stock);
  36.                 clrscr ();
  37.                 fwrite(&arti,sizeof(struct producto),1,pf);
  38.                 printf("Ingrese Numero del Articulo a Registrar \n");
  39.                 scanf(" %d",&arti.na);
  40.                 }
  41. fclose(pf); //Cierre del Archivo
  42. }
  43.  
  44.  

Espero sus respuesta,Saludos ^^ ;D

PD: Recuerden que si lo van a probar en sus PC deben en esta linea modificar la dirección donde se creara el archivo:
Código
  1. pf=fopen("D:\Super\pf.txt","wb");


Título: Re: Grabo archivo y no lo veo creado,en C,Borland C++ 5.02
Publicado por: Beakman en 11 Diciembre 2012, 05:58 am
Código
  1. pf=fopen("D:\Super\pf.txt","wb");

Cambiá eso por esto:

Código
  1. pf=fopen("D:\\Super\\pf.txt","wb");


Título: Re: Grabo archivo y no lo veo creado,en C,Borland C++ 5.02
Publicado por: SonaArtica en 11 Diciembre 2012, 14:36 pm
Ahora si se me grabo el archivo pero cuando lo abro se grabo cn basura :(
(http://img593.imageshack.us/img593/2382/errorentexto.png)

Y eso que en el while le mande un fflush para que limpiara el buffer y pasa esto. :o


Título: Re: Grabo archivo y no lo veo creado,en C,Borland C++ 5.02
Publicado por: rir3760 en 11 Diciembre 2012, 17:22 pm
Ahora si se me grabo el archivo pero cuando lo abro se grabo cn basura :(
Lo primero que debes hacer es evitar el uso de la biblioteca conio de Borland, la función gets, el uso de "fflush(stdin)" y cambiar la definición de la función main. Mas información en la pagina |Lo que no hay que hacer en C/C++. Nivel basico| (http://foro.elhacker.net/programacion_cc/lo_que_no_hay_que_hacer_en_cc_nivel_basico-t277729.0.html).

La llamada a "fflush(stdin)" no tiene nada que ver ya que opera sobre la entrada estándar (comportamiento no definido) y no sobre tu archivo. La forma en que se visualiza este en un editor de texto es normal ya que imprimes una estructura, si quieres guardarlo como texto plano debes utilizar la función fprintf.

Un saludo


Título: Re: Grabo archivo y no lo veo creado,en C,Borland C++ 5.02
Publicado por: twins en 12 Diciembre 2012, 00:48 am
tienes puesto el programa en while por lo tanto seria aconsejable utilizar un arreglo de estructuta