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

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


  Mostrar Mensajes
Páginas: [1]
1  Programación / Programación C/C++ / Re: Problema al modificar registro en un archivo en: 18 Mayo 2017, 22:19 pm
Muchisimas gracias por la ayuda/explicacion, te cuento que pude arreglar el error gracias a lo que me dijiste de que estaba buscando datos en binario, cambie la forma de guardar los datos envés de usar ".txt" lo cambie a ".bin".
Adjunto el codigo para que veas lo que modifique.
Ingreso
Código:
#include <iostream>
#include <conio>
#include <stdio.h>
#include <stdlib.h>
#include <string>
#include <ctype.h>
FILE *FMaterial = NULL;
struct Material
{
int iID;
   char cNombre[25];
   int iExist;
   float fPrecioC;
   int iExistm;
   char cDescrip[30];
   float fPrecioV;
   int iEliminado;
};
void vingresomat()
{
Material material;
   clrscr();
   fflush(stdin);
   cout<<"\t||=====Ingreso de datos=====\n";
   cout<<"\t||Nombre: ";
   fgets(material.cNombre,sizeof(material.cNombre),stdin);
   if(material.cNombre[strlen(material.cNombre)-1]=='\n')
   {
    material.cNombre[strlen(material.cNombre)-1] = '\0';
   }
   fflush(stdin);
   cout<<"\t||Existencia: ";
   cin>>material.iExist;
   fflush(stdin);
   cout<<"\t||Precio Costo: Q";
   cin>>material.fPrecioC;
   fflush(stdin);
   cout<<"\t||Existencia Minima: ";
   cin>>material.iExistm;
   cout<<"\t||Descripcion: ";
   fgets(material.cDescrip,sizeof(material.cDescrip),stdin);
   if(material.cDescrip[strlen(material.cDescrip)-1] == '\n')
   {
    material.cDescrip[strlen(material.cDescrip)-1] = '\0';
   }
   cout<<"\t||Precio de Venta: Q";
   cin>>material.fPrecioV;
   material.iEliminado=0;
   FMaterial = fopen("Material.bin", "r");
   if(FMaterial==NULL)
   {
    FMaterial = fopen("Material.bin","a+b");
      material.iID=1;
      fwrite(&material,sizeof(Material),1,FMaterial);
      fclose(FMaterial);
   }else
   {
    fclose(FMaterial);
      FMaterial=fopen("Material.bin","a+b");
      fseek(FMaterial,0,SEEK_END);
      material.iID=(ftell(FMaterial)/sizeof(Material))+1;
      rewind(FMaterial);
      fwrite(&material,sizeof(Material),1,FMaterial);
      fclose(FMaterial);
   }
}
void main()
{
   vingresomat();
getch();
}
Mostrar
Código:
#include <iostream>
#include <conio>
#include <stdio.h>
#include <stdlib.h>
#include <string>
#include <ctype.h>
FILE *FMaterial = NULL;
struct Material
{
int iID;
   char cNombre[25];
   int iExist;
   float fPrecioC;
   int iExistm;
   char cDescrip[30];
   float fPrecioV;
   int iEliminado;
};
void vreportemat()
{
Material material;
clrscr();
   FMaterial = fopen("Material.bin", "r");
   if (FMaterial == NULL)
   {
    cout<<"No se han ingresado datos....\n";
   }else
   {
   cout<<"\t||=======Datos=======\n";
   fread(&material,sizeof(Material),1,FMaterial);
   while(feof(FMaterial)== 0)
   {
   if (material.iEliminado==0)
   {
   cout<<"\t||ID: "<<material.iID;
   cout<<"\n\t||Nombre: "<<material.cNombre;
   cout<<"\n\t||Existencia: "<<material.iExist;
   cout<<"\n\t||Precio Costo: Q."<<material.fPrecioC;
   cout<<"\n\t||Existencia Minima: "<<material.iExistm;
   cout<<"\n\t||Descripcion: "<<material.cDescrip;
   cout<<"\n\t||Precio de Venta: Q."<<material.fPrecioV;
   cout<<"\n\t||======================================\n";
   }
   fread(&material,sizeof(Material),1,FMaterial);
   }
   }
   fclose(FMaterial);
getch();
}
void main()
{
vreportemat();
}
Modificar
Código:
#include <iostream>
#include <conio>
#include <stdio.h>
#include <stdlib.h>
#include <string>
#include <ctype.h>
FILE *FMaterial = NULL;
struct Material
{
int iID;
   char cNombre[25];
   int iExist;
   float fPrecioC;
   int iExistm;
   char cDescrip[30];
   float fPrecioV;
   int iEliminado;
};
void modificar()
{
clrscr();
Material material;
int auxID;
cout<<"ID Material: ";
cin>>auxID;
FMaterial = fopen("Material.bin","r+");
if (FMaterial == NULL)
{
cout<<"No hay registros en el archivo...\n";
}else
{
fseek(FMaterial, (long)(auxID-1)* sizeof(Material), 0);
fread(&material, sizeof(Material),1,FMaterial);
cout<<"Nombre: "<<material.cNombre<<"\n";
fclose(FMaterial);
}
}
void main()
{
modificar();
getch();
}
2  Programación / Programación C/C++ / Re: Problema al modificar registro en un archivo en: 18 Mayo 2017, 17:33 pm
Gracias por responder, que deberia cambiar en el codigo?
https://mega.nz/#!LgIzQQTT!2K7-cx9Hh5KuoaJDJFt77pwpyLEJn1glII4crufymLM
Aqui dejo el archivo de texto de donde intento sacar los datos, solo tiene 2 registros.
3  Programación / Programación C/C++ / Problema al modificar registro en un archivo en: 18 Mayo 2017, 08:20 am
Hola buenas noches, quisiera que me ayudaran con un problema que tengo al usar la funcion fseek para modificar cierto registro en un archivo txt, el problema es que cuando ingreso un "ID" que no sea 1, no me toma ninguna registro, si pudieran ayudarme se los agradeceria mucho :)

Código:
#include <iostream>
#include <conio>
#include <stdio.h>
#include <stdlib.h>
#include <string>
#include <ctype.h>
FILE *FMaterial = NULL;
struct Material
{
int iID;
   char cNombre[25];
   int iExist;
   float fPrecioC;
   int iExistm;
   char cDescrip[30];
   float fPrecioV;
   int iEliminado;
};
void modificar()
{
clrscr();
Material material;
int auxID;
cout<<"ID Material: ";
cin>>auxID;
FMaterial = fopen("Material.txt","r+");
if (FMaterial == NULL)
{
cout<<"No hay registros en el archivo...\n";
}else
{
fseek(FMaterial, (long)(auxID-1)* sizeof(Material), 0);
fread(&material, sizeof(Material),1,FMaterial);
cout<<"Nombre: "material.cNombre<<"\n";
fclose(FMaterial);
}
}
void main()
{
modificar();
getch();
}
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines