Test Foro de elhacker.net SMF 2.1

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:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>

//Estructura cn datos de Productos
struct producto{
int na; //Numero de Articulo
              char a[12]; //Nombre de Articulo
              char d[50]; //Descripcion del Articulo
              float pu; //Precio por Unidad
              int stock; //Stock de Articulo
              };
main(){
int i;
struct producto arti;
FILE *pf;
pf=fopen("D:\Super\pf.txt","wb");
//Comprobacion del Acceso
if(pf==NULL){
            printf("NO SE PUEDE ACCEDER \n");
            getch();
            exit(1);
            }
printf("Ingrese Numero del Articulo a Registrar \n");
scanf(" %d",&arti.na);
while(arti.na){
 fflush(stdin);
                printf("Ingrese Nombre del Articulo \n");
                gets(arti.a);
                printf("Ingrese la Descripcion del Articulo \n");
                gets(arti.d);
                printf("Ingrese el Precio por Unidad\n");
                scanf(" %f",&arti.pu);
                printf("Ingrese el STOCK de articulos \n");
                scanf(" %d",&arti.stock);
                clrscr ();
                fwrite(&arti,sizeof(struct producto),1,pf);
                printf("Ingrese Numero del Articulo a Registrar \n");
                scanf(" %d",&arti.na);
                }
fclose(pf); //Cierre del Archivo
getch();
}



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:
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
pf=fopen("D:\Super\pf.txt","wb");

Cambiá eso por esto:

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
Cita de: SonaArtica en 11 Diciembre 2012, 14:36 PMAhora 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