Hola!
Estoy manejando un programa en Dev C++ donde tengo que crear un archivo de texto con las funciones fwrite,fread y fseek (creo que esta sirve para el metodo de buscar) usando estrucuras y con el uso de un menu que lleve:
1- Ingresar Registro
2- Mostrar Registros
3- Buscar Registro
4- Modificar Registro
5- Salir
Ayuda con el de buscar y modificar...
Tengo una parte del codigo de buscar pero no me salio..
Aqui esta mi codigo:
//Menu Manejo de Archivos C++
#include<cstdlib>
#include<iostream>
#include<string.h>
#include<conio.h>
#include<stdio.h>
#include<ctype.h>
#include<windows.h> //Para utilizar la funcion Sleep
using namespace std;
struct musica
{
char id[5];
char nombre_album[50];
char nombre_artista[30];
char genero[15];
char tracks[2];
char año[5];
char salto='\n';
};
musica cargar_datos (); // Cargar struct con los datos ingresados
musica album;
bool repite=true;
bool encontrado=false;
int i=0, band=0,fin=0;
void menu();
void crear();
void mostrar();
void salir();
int main()
{
menu(); //Llamamos al metodo menu
return 1;
}
void menu() //Metodo para el Menu
{
int opcion=0;
do
{
cout<<endl<<endl;
system("Color F1");
cout<<"\t Menu de Manejo de Archivos en C++"<<endl<<endl;
cout<<"\t\t[1]- Crear e Ingresar registros al Archivo"<<endl;
cout<<"\t\t[2]- Mostrar Registros"<<endl;
cout<<"\t\t[3]- Buscar Registros"<<endl;
cout<<"\t\t[4]- Modificar un Registro"<<endl;
cout<<"\t\t[5]- Salir"<<endl;
cout<<"\t\t-------------------------------"<<endl;
cout<<"\t\tOpcion: ";
cin>>opcion;
switch(opcion)
{
case 1:
crear();
system("pause>null");
system("cls");
break;
case 2:
mostrar();
system("pause>null");
system("cls");
break;
case 3:
/*buscar();
system("pause>null");
system("cls");*/
break;
case 4:
/*modificar();
system("pause>null");
system("cls");*/
break;
case 5:
salir();
break;
default:
cout<<endl;
system("Color FC");
cout<<"\t\tOpcion Incorrecta!"<<endl;
Sleep(2000);
system("Color F1");
system("cls");
}
}while(opcion!=6);
}//Metodo menu
void crear() //Metodo para el crear el archivo
{
FILE* CD=fopen("musica.txt", "w");
string consulta = "s";
memset(&album,0,sizeof(&album));
musica registro;
while(consulta!="n")
{
registro = cargar_datos();
fwrite(®istro, sizeof(musica), 1, CD );
cout<<endl;
cout<<"\t\tDesea cargar mas registros [ s/n ]: ";
getline(cin,consulta );
}
cout<<endl;
cout<<"\t\t¡Registro Agregado Correctamente!"<<endl;
fclose(CD);
}
musica cargar_datos() //Funcion para ingresar los registros dentro del archivo
{
string nombre="\0",apellido="\0",telefono="\0",direccion="\0",email="\0";
//memset(&cliente,0,sizeof(&cliente));
cout<<"\tIngrese los datos que se le piden a continuacion"<<endl<<endl;
fflush(stdin);
cout<<"\t\tID: ";
gets(album.id);
fflush(stdin);
fflush(stdin);
cout<<"\t\tNombre del Album: ";
gets(album.nombre_album);
//strcpy(album.nombre_album, nombre_album.c_str(); // función strcpy( destino, origen ) y método c_str() de la clase string
fflush(stdin);
fflush(stdin);
cout<<"\t\tNombre del Artista: ";
gets(album.nombre_artista);
fflush(stdin);
do
{
fflush(stdin);
cout<<"\t\tGenero: ";
gets(album.genero);
fflush(stdin);
fin=strlen(album.genero);
band=0;
for(i=0;i<fin;i++)
{
if(((album.genero>='A')&&(album.genero<='Z'))||((album.genero>='a')&&(album.genero<='z'))||(album.genero==' '))
{
band=0;
}
else
{
i=fin;
band=1;
system("Color FC");
cout<<"\tCaracteres invalidos... Intentelo de nuevo..."<<endl;
Sleep(2000);
system("Color F1");
}
}
}while(band==1);
fflush(stdin);
cout<<"\t\tNumero de Tracks: ";
gets(album.tracks);
fflush(stdin);
fflush(stdin);
cout<<"\t\tAnyo: ";
gets(album.año);
fflush(stdin);
album.salto;
return album;
}
void mostrar() //Metodo para leer el archivo
{
FILE* CD = fopen("musica.txt", "r");
musica registro;
cout<<endl;
cout<<"\t\tRegistros Ingresados en el Archivo"<<endl;
cout<<"\t\t________________________________"<<endl;
fread(®istro, sizeof(musica), 1, CD);
//read <t_cliente> ( arch_cliente ); // ASI LO INVOCO SI USO EL TEMPLATE
while(feof(CD) ==0)
{ // TAMBIEN PODRIA PONER COMO CONDICIÓN feof( arch_cliente ) == 0
cout<<"\t\tID: " <<registro.id<<endl;
cout<<"\t\tNombre del Album: "<<registro.nombre_album<< endl;
cout<<"\t\tNombre del Artista: "<<registro.nombre_artista<<endl;
cout<<"\t\tGenero: "<<registro.genero<<endl;
cout<<"\t\tNumero de Trakcs: "<<registro.tracks<<endl;
cout<<"\t\tAnio: "<<registro.año<<endl;
cout<<"\t\t________________________________"<<endl;
fread(®istro, sizeof(musica), 1, CD);
}
cout<<endl;
cout<<"\t\tSe completo la lectura del archivo..."<<endl;
fclose(CD);
}
void salir() //Metodo para finalizar el programa
{
cout<<endl;
cout<<"\t\tPrograma Finalizado!! Hasta Pronto ^_^/"<<endl;
}
void buscar()
{
}
void modificar()
{
}