Grabo archivo y no lo veo creado,en C,Borland C++ 5.02

Iniciado por SonaArtica, 11 Diciembre 2012, 04:29 AM

0 Miembros y 1 Visitante están viendo este tema.

SonaArtica

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");
<z

Beakman

pf=fopen("D:\Super\pf.txt","wb");

Cambiá eso por esto:

pf=fopen("D:\\Super\\pf.txt","wb");

SonaArtica

Ahora si se me grabo el archivo pero cuando lo abro se grabo cn basura :(


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

rir3760

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|.

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
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language

twins

#4
tienes puesto el programa en while por lo tanto seria aconsejable utilizar un arreglo de estructuta