Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Elyic

#1
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
#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
#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
#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
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
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 :)

#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();
}