Hola, necesito ayuda con este programa, pues no localizo el fallo. yo creo que esta bien programado pero al ejecutarlo y darle a 2 por ejemplo (que es crear fichero) se ejecutan los casos crear leer y default, y no entiendo por que... incluso dandole a 5 (que deberia salirse del bucle) no funciona.
abajo he puesto una captura de la consola para que entendais lo que os digo
saludos y gracias
Código C:
Ver original#include <stdio.h>
#include <stdlib.h>
void Programa();
void inicioPrograma();
void menuPrograma();
void crearFichero(char *nombreFichero);
void leerFichero(char *nombreFichero);
void escribirFichero(char *nombreFichero);
void borrarFichero(char *nombreFichero);
enum _estado {_inicioPrograma, _menuPrograma, _crearFichero, _leerFichero, _escribirFichero, _borrarFichero, _finPrograma};
enum _estado estado;
int main()
{
estado = _inicioPrograma;
Programa();
return 0;
}
//FUNCIONES
void Programa()
{
char nombreFichero[40];
do{
switch(estado){
case _inicioPrograma: inicioPrograma();
case _menuPrograma: menuPrograma();
case _crearFichero: crearFichero(nombreFichero);
case _leerFichero: leerFichero(nombreFichero);
case _escribirFichero: escribirFichero(nombreFichero);
case _borrarFichero: borrarFichero(nombreFichero);
default: printf("...default..."); }
}while(estado != _finPrograma);
//for(;;)
//{
//if(estado == _finPrograma){break;}
//else if(estado == _leerFichero){leerFichero(nombreFichero);}
//else if(estado == _crearFichero){crearFichero(nombreFichero);}
//else if(estado == _menuPrograma){menuPrograma();}
//else if(estado == _inicioPrograma){inicioPrograma();}
//}
}
void inicioPrograma()
{
printf("Bienvenido. Pulse ENTER para continuar..."); estado = _menuPrograma;
}
void menuPrograma()
{
int modo;
modo = 0;
printf("1.- Crear nuevo fichero.\n"); printf("3.- Escribir en fichero\n"); printf("4.- Borrar fichero\n"); switch(modo)
{
case 1: estado = _crearFichero;
case 2: estado = _leerFichero;
case 3: estado = _escribirFichero;
case 4: estado = _borrarFichero;
case 5: estado = _finPrograma;
}
};
void crearFichero(char *nombreFichero)
{
estado = _menuPrograma;
};
void leerFichero(char *nombreFichero)
{
estado = _menuPrograma;
};
void escribirFichero(char *nombreFichero){};
void borrarFichero(char *nombreFichero){};