bueno al final he logrado el archivo... les dejo el codigo por si a alguien que venga empezando le sirve de algo!! SALUDOS!!
Código: c
// prog 2 lab.cpp: define el punto de entrada de la aplicación de consola.
//
#include "stdafx.h"
#include <conio.h>
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
using namespace std;
/*Desarrolle una estructura de datos de asistente, el cual debe tener cedula, numero de carnet, instituto en el que estudia, nombre y anidar otra estructura; la cual se llama curso_asistido y debe tener nombre del curso, profesor del curso, y código del curso. Y un menú para Mostar, llenarlas, eliminar, guardar y cargar.*/
struct curso_asistido{
char ncurso[10];
char prof_curso[20];
int codcurso;
};
struct asistente{
int ced;
int carne;
char insti[30];
char nombre[30];
curso_asistido cursos[10];
int cr;
bool activo;
};
asistente arreglo[50];
int cont=0;
void guardar(asistente arreglo[], int cont){
system("CLS");//limpia la pantalla
cout<<endl<<endl;
FILE* arch;
arch = fopen("archivo.txt", "w+");
for (int y=0;y<cont;y++){
if (arreglo[y].activo== true){//solo se guardaran aquellas personas que esten activas \n"
cout<<"Nombre: "<<arreglo[y].nombre<<" Cedula: "<<arreglo[y].ced<<" -GUARDADO-"<<endl;
fprintf(arch, "%s", arreglo[y].nombre);
fprintf(arch, "\n%i", arreglo[y].carne);
fprintf(arch, "\n%s", arreglo[y].insti);
fprintf(arch, "\n%i", arreglo[y].cr);
for (int i=0; i<arreglo[y].cr;i++){
fprintf(arch, "\n%s", arreglo[y].cursos[i].ncurso);
fprintf(arch, "\n%s", arreglo[y].cursos[i].prof_curso);
fprintf(arch, "\n%i", arreglo[y].cursos[i].codcurso);
if(y==(cont-1)){fprintf (arch, "\n%i", arreglo[y].ced);}// se eliminan los enter al final del archivo de texto
else fprintf (arch, "\n%i\n\n", arreglo[y].ced);
}
}
}
fclose(arch);
}
void cargar(asistente arreglo[],int &cont){//El arreglo no debe ingresar como referencia, pero el contador si para que su valor cambie respecto a lo que se hace en la funcion
system("CLS");
FILE*arch;
arch=fopen("archivo.txt","r");
if(arch==NULL){
cout<<"no se encontro el archivo"<<endl;
}else{
char cedT[15];
char carneT[15];
char crT[15];
char codT[15];
while(!feof(arch)){
fscanf(arch,"%s",arreglo[cont].nombre);//cont al inicio esta en cero
fscanf(arch,"%s",carneT);
arreglo[cont].carne=atoi(carneT);
fscanf(arch,"%s",arreglo[cont].insti);
fscanf(arch,"%s",crT);
arreglo[cont].cr=atoi(crT);
for (int i=0; i<arreglo[cont].cr; i++){
fscanf(arch,"%s",arreglo[cont].cursos[i].ncurso);
fscanf(arch,"%s",arreglo[cont].cursos[i].prof_curso);
fscanf(arch,"%s",codT);
arreglo[cont].cursos[i].codcurso=atoi(codT);
fscanf(arch,"%s",cedT);
arreglo[cont].ced=atoi(cedT);
}
cout<<endl<<endl<<"Nombre: "<<arreglo[cont].nombre<<" Cedula: "<<arreglo[cont].ced<<"--CARGADO--"<<endl;
arreglo[cont].activo=true;// Activa de nuevo a la persona
cont++;
}
fclose(arch);
}
cout<<endl<<" Presione una tecla para continuar..."<<endl;
}
void nasistente(asistente arreglo[],int &cont){
system ("CLS");
cout<<"****************************************************************************************************"<<endl;
cout<<" INGRESO DE NUEVO ESTUDIANTE"<<endl;
cout<<"****************************************************************************************************"<<endl<<endl;
cout<<"Ingrese el nombre del estudiante: ";
cin>>arreglo[cont].nombre;
cout<<"Ingrese la cedula del estudiante: ";
cin>>arreglo[cont].ced;
cout<<"Ingrese el carné del estudiante: ";
cin>>arreglo[cont].carne;
cout<<"Ingrese el instituto donde estudia: ";
cin>>arreglo[cont].insti;
cout<<" Ingrese el numero de cursos matriculados: ";
cin>>arreglo[cont].cr;
cout<<endl;
for (int i=0; i<arreglo[cont].cr; i++){
cout<<"Curso #"<<i+1<<endl;
cout<<"Ingrese el curso al que asiste: ";
cin>>arreglo[cont].cursos[i].ncurso;
cout<<"Ingrese el codigo de curso: ";
cin>>arreglo[cont].cursos[i].codcurso;
cout<<"Ingrese el profesor que da el curso: ";
cin>>arreglo[cont].cursos[i].prof_curso;
arreglo[cont].activo=true;
}
cont++;
}
void versis(asistente[],int &cont){
system("CLS");
cout<<"***************************** LISTA DE ALUMNOS ******************************"<<endl<<endl;
if(cont==0){
cout<<"LA LISTA ESTA VACIA!!"<<endl;
}
else{
for (int i=0; i<cont; i++){
if(arreglo[i].activo==true){
cout<<"Alumno: "<<arreglo[i].nombre<<endl;
cout<<"Cedula: "<<arreglo[i].ced<<endl;
cout<<"Carné: "<<arreglo[i].carne<<endl;
cout<<"Instituto: "<<arreglo[i].insti<<endl;
for (int n=0; n<arreglo[i].cr;n++){
cout<<"Curso: "<<arreglo[i].cursos[n].ncurso<<endl;
cout<<"Codigo del curso: "<<arreglo[i].cursos[n].codcurso<<endl;
cout<<"Profesor que imparte el curso: "<<arreglo[i].cursos[n].prof_curso<<endl<<endl;
} cout<<"***************************** *****************************"<<endl<<endl;
}
}
}
}
void eliminar(asistente[], int &cont){
system("CLS");
cout<<"Ingrese el nombre del estudiante a eliminar: ";
char est[30];cin>>est;
for (int i=0; i<cont; i++){
if (strcmp(est, arreglo[i].nombre)==0){
arreglo[i].activo=false;
cout<<"El estudiante ha sido eliminado de la base de datos"<<endl<<endl;
}
if (i==cont){
cout<<"El estudiante buscado no existe en base de datos"<<endl;
}
}
}
void main(){
bool men= true;
int op= 0;
while (men){
system ("CLS");
cout<<"****************************************************************************************************"<<endl;
cout<< "MENU DE OPERACIONES"<<endl;
cout<<"****************************************************************************************************"<<endl<<endl;
cout<<"1- Agregar estudiante--> "<<endl;
cout<<"2- Listar estudiantes--> "<<endl;
cout<<"3- Borrar estudiante --> "<<endl;
cout<<"4- Guardar lista a archivo --> "<<endl;
cout<<"5- Cargar lista de archivo --> "<<endl;
cout<<"6- -> SALIR <- "<<endl<<endl;
cout<<"¿ Que accion desea realizar ? ";
cin>>op;
switch (op){
case 1:{
nasistente( arreglo,cont);
cout<<"Alumno agregado con exito "<<endl<<endl<<"Presione cualquier tecla para continuar...";
getch();
break;
}
case 2:{
versis(arreglo, cont);
cout<<"Presione cualquier tecla para continuar...";
getch();
break;
}
case 3:{
eliminar(arreglo,cont);
cout<<"Presione cualquier tecla para continuar...";
getch();
break;
}
case 4:{
guardar(arreglo, cont);
cout<< "Archivo guardado con exito"<<endl<<endl<<"Presione cualquier tecla para continuar...";
getch();
break;
}
case 5:{
cargar(arreglo, cont);
cout<<" Archivo cargado con exito" <<endl<<endl<<"Presione cualquier tecla para continuar...";
getch();
break;
}
case 6:{
men= false;
cout<<"Presione una tecla para salir...";
getch();
break;
}
default:{
cout<<endl<<"La opcion digitada no exite"<<endl<<endl;
cout<<" Presione una tecla para continuar..."<<endl;
getch();
}
}
}
}