C/Visual C - Se cierra mi ejecutable

 
Vista:
sin imagen de perfil

Se cierra mi ejecutable

Publicado por Oswaldo (1 intervención) el 22/05/2018 07:04:44
Este es mi programa ya compilo bien pero al usar la opcion 2 de del primer switch y la opcion uno de el segundo switch y al llenar la estructura de datos en el ultimo punto de llenado el programa truena y me aparece un mensaje de cerrar programa o buscar solucion en la web y no se por que lo hace si todo esta bien o al menos eso es lo que cheque y no tiene ningun error


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
#include<stdio.h>
#include<stdlib.h>
 
typedef struct{
	char nombre_completo[100];
	char direccion[50];
	char id_trabajador[10];
	char puesto[25];
	char estado_del_trabajador[20];
	char telefono[15];
	int edad;
	int salario;
}Persona;
 
void menu (char* nombreArchivo);
Persona crearPersona();
void guardarPersona(Persona persona, char* nombreArchivo);
void mostrarEmpleados(char* nombreArchivos);
void pausar();
char menu_empleados();
void menux();
void mes4s();
 
int main(){
	char nombreArchivo[15]= "cafeteria.bin";
 
	menu (nombreArchivo);
	return 0;
}
 
void menu(char* nombreArchivo){
	int opc,opc_em;
	do {
		system("cls");
		menux();
		scanf("%i",&opc);
		if (opc>0 && opc<4){
			system("cls");
			switch(opc){
				case 1:
					mes4s();
				break;
 
				case 2:
					menu_empleados();
					scanf("%i",&opc_em);
					if(opc_em>=0 && opc_em<6){
						switch(opc_em){
							case 1:
								guardarPersona(crearPersona(), nombreArchivo);
							break;
 
							case 2:
								mostrarEmpleados(nombreArchivo);
							break;
 
							case 0:
								printf("Fin del programa\n");
								pausar();
							break;
						}
					}
				break;
			}
		}else{
			printf("Opcion no contemplada, elija una de las opciones que se le indican\n");
			pausar();
		}
 
    } while(opc!=0);
 
}
Persona crearPersona(){
	Persona persona;
 
	printf("Digite el nombre completo del empleado: ");
	scanf(" %[^\n]", persona.nombre_completo);
	fflush(stdin);
	printf("Digite la direccion del empleado: ");
	scanf(" %[^\n]", persona.direccion);
	fflush(stdin);
	printf("Digite el id del trabajador: ");
	scanf(" %[^\n]", persona.id_trabajador);
	fflush(stdin);
	printf("Digite el puesto del empleado: ");
	scanf(" %[^\n]", persona.puesto);
	fflush(stdin);
	printf("Digite el estado del empleado: ");
	scanf(" %[^\n]", persona.estado_del_trabajador);
	fflush(stdin);
	printf("Digite el telefono del trabajador: ");
	scanf(" %[^\n]", persona.telefono);
	fflush(stdin);
	printf("Digite la edad del empleado: ");
	scanf(" %i", persona.edad);
	fflush(stdin);
	printf("Digite el salario del empleado: ");
	scanf(" %i", persona.salario);
	fflush(stdin);
 
	return persona;
}
 
void guardarPersona(Persona persona, char* nombreArchivo){
	FILE* file = fopen(nombreArchivo, "ab");
 
	if(file==NULL){
		printf("Error al acceder al archivo\n");
		pausar();
 
	}else{
		fwrite(&persona, sizeof(Persona), 1, file);
		printf("\nContacto guardado\n");
		pausar();
		fclose(file);
	}
}
 
void mostrarEmpleados(char* nombreArchivo){
	FILE* file= fopen(nombreArchivo, "rb");
	if (file==NULL){
		printf("Error al acceder al archivo\n");
		pausar();
 
	}else{
		Persona persona;
		printf("%-20s %-30s %-20s %-20s %-10s %-10s %-20s %-10s\n\n", "Nombre", "Direccion", "ID del trabajador", "Puesto", "Edad", "Salario", "Estado del trabajador", "Telefono");
		while(fread(&persona, sizeof(Persona), 1, file)){
			printf("%-20s %-30s %-20s %-20i %-10i %-10s %-10s\n", persona.nombre_completo, persona.direccion, persona.id_trabajador, persona.puesto, persona.edad, persona.salario, persona.estado_del_trabajador, persona.telefono);
 
		}
		fclose(file);
		printf("\n\n");
		pausar();
	}
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder