[ Foro de C++ ]

El programa se cierra luego de llamar a un void

08-Dec-2019 21:29
Invitado (Alike)
0 Respuestas

Hola tengo un problema, y es que despues de llamar a un void, el programa se me cierra, este es mi codigo.

#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<string.h>
#include<fstream>
#include<cstdlib>
#include<cstring>
using namespace std;

int cont=0;

void leerdatoarchivosalumnos();
void copiar(char temp[], int i);
void vaciar(char temp[]);
void copiarap(char temp[], int i);
void prueba();

typedef struct{
char *nombre1;
char *contra1;
int nota11[3];
int asistencias1[3];
int inasistencias1[3];

}alumnos;

alumnos *alum;


struct Alumno{
char nombre[40];
char contra[40];
char contra2[40];
int nota1[3];
int asistencias[3];
int inasistencias[3];
}alumno[99];



int main(){

cout<<"hola amigo"<<endl;
fflush(stdin);
leerdatoarchivosalumnos();
prueba();
fflush(stdin);
cout<<"hola amigo222222"<<endl;
fflush(stdin);
cout<<"Hola"<<endl;
for(int i=0; i<cont+1; i++){

fflush(stdin);
cout<<"Nombre: "<<alumno[i].nombre<<" Contraseña: "<<alumno[i].contra<<" Nota1: "<<alumno[i].nota1[0]<<" Nota2: "<<alumno[i].nota1[1]<<" Nota3: "<<alumno[i].nota1[2]<<" Asistencias1: "<<alumno[i].asistencias[0]<<" Asistencias2: "<<alumno[i].asistencias[1]<<" Asistencias3: "<<alumno[i].asistencias[2]<<" Inasistencias1: "<<alumno[i].inasistencias[0]<<" Inasistencias2: "<<alumno[i].inasistencias[1]<<" Inasistencias3: "<<alumno[i].inasistencias[2]<<endl;
cout<<"Hola amiguito ";


}
cout<<"Hola que tal";
system("pause");
}

void leerdatoarchivosalumnos(){

char temp[50];
char temp2[50];
int i,j;
char aux;
char auxt;
FILE *f;
f=fopen("C:/Users/USUARIO/Desktop/datosalumnos.txt","r");

while(!feof(f)){

fgets(temp,50,f);
cont++;

};

rewind(f);

alum=(alumnos*)malloc(cont*sizeof(alumnos));

if(alum==NULL){
cout<<"No se ha podido establecer espacio para la memoria";

}


for(i=0; !feof(f); i++){

vaciar(temp);
aux='0';
for(j=0; aux!='-';j++){
aux=fgetc(f);
if(aux!='-'){
temp[j]=aux;
}
}

copiar(temp,i);

vaciar(temp);
aux='0';
for(int w=0; aux!='-';w++){
aux=fgetc(f);
if(aux!='-'){
temp[w]=aux;
}
}

copiarap(temp,i);

vaciar(temp);
aux='0';
for(int w=0; aux!='-';w++){
aux=fgetc(f);
if(aux!='-'){
temp[w]=aux;
}
}

alum[i].nota11[0]=atoi(temp);

vaciar(temp);
aux='0';
for(int w=0; aux!='-';w++){
aux=fgetc(f);
if(aux!='-'){
temp[w]=aux;
}
}

alum[i].nota11[1]=atoi(temp);

vaciar(temp);
aux='0';
for(int w=0; aux!='-';w++){
aux=fgetc(f);
if(aux!='-'){
temp[w]=aux;
}
}

alum[i].nota11[2]=atoi(temp);

vaciar(temp);
aux='0';
for(int w=0; aux!='-';w++){
aux=fgetc(f);
if(aux!='-'){
temp[w]=aux;
}
}

alum[i].asistencias1[0]=atoi(temp);


vaciar(temp);
aux='0';
for(int w=0; aux!='-';w++){
aux=fgetc(f);
if(aux!='-'){
temp[w]=aux;
}
}

alum[i].asistencias1[1]=atoi(temp);


vaciar(temp);
aux='0';
for(int w=0; aux!='-';w++){
aux=fgetc(f);
if(aux!='-'){
temp[w]=aux;
}
}

alum[i].asistencias1[2]=atoi(temp);

vaciar(temp);
aux='0';
for(int w=0; aux!='-';w++){
aux=fgetc(f);
if(aux!='-'){
temp[w]=aux;
}
}

alum[i].inasistencias1[0]=atoi(temp);

vaciar(temp);
aux='0';
for(int w=0; aux!='-';w++){
aux=fgetc(f);
if(aux!='-'){
temp[w]=aux;
}
}

alum[i].inasistencias1[1]=atoi(temp);


vaciar(temp);
fgets(temp,4,f);
alum[i].inasistencias1[2]=atoi(temp);

fflush(stdin);
strcpy(alumno[i].nombre,alum[i].nombre1);
fflush(stdin);
strcpy(alumno[i].contra,alum[i].contra1);
fflush(stdin);
strcpy(alumno[i].contra2,alum[i].contra1);
fflush(stdin);
alumno[i].nota1[0]=alum[i].nota11[0];
alumno[i].nota1[1]=alum[i].nota11[1];
alumno[i].nota1[2]=alum[i].nota11[2];
alumno[i].asistencias[0]=alum[i].asistencias1[0];
alumno[i].asistencias[1]=alum[i].asistencias1[1];
alumno[i].asistencias[2]=alum[i].asistencias1[2];
alumno[i].inasistencias[0]=alum[i].inasistencias1[0];
alumno[i].inasistencias[1]=alum[i].inasistencias1[1];
alumno[i].inasistencias[2]=alum[i].inasistencias1[2];

system("pause");

fflush(stdin);
cout<<"Nombre: "<<alumno[i].nombre<<" Contraseña: "<<alumno[i].contra<<" Nota1: "<<alum[i].nota11[0]<<" Nota2: "<<alum[i].nota11[1]<<" Nota3: "<<alum[i].nota11[2]<<" Asistencias1: "<<alum[i].asistencias1[0]<<" Asistencias2: "<<alum[i].asistencias1[1]<<" Asistencias3: "<<alum[i].asistencias1[2]<<" Inasistencias1: "<<alum[i].inasistencias1[0]<<" Inasistencias2: "<<alum[i].inasistencias1[1]<<" Inasistencias3: "<<alumno[i].inasistencias[2]<<endl;
}
fclose(f);
cout<<"Adios";

}


void vaciar(char temp[]){

for(int i=0; i<50; i++){
temp[i]='\0';
}
}

void copiar(char temp[], int i){

int N = strlen(temp)+1;

alum[i].nombre1=(char*)malloc(N*sizeof(char));
if(alum[i].nombre1==NULL){
cout<<"No se pudo abrir";
}
strcpy(alum[i].nombre1,temp);

}

void copiarap(char temp[], int i){

int A = strlen(temp)+1;

alum[i].contra1=(char*)malloc(A*sizeof(char));
if(alum[i].contra1==NULL){
cout<<"No se pudo abrir";
}
strcpy(alum[i].contra1,temp);

}

void prueba(){

cout<<" Te devuelve al inicio ";

}



Todo funciona bien, pero luego de llamar al void "leerdatoarchivosalumnos()"en int main, no me ejecuta lo que esta debajo dentro del int main.
Si alguien ve ese error que tiene el codigo que me lo diga porfavor




(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)