Título: Ayuda para metodo de buscar y modifcar en un .txt Publicado por: pedro0620 en 27 Septiembre 2016, 02:38 am 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() { } |