Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Salir de una funcion con la tecla ESC

Estas en el tema de Salir de una funcion con la tecla ESC en el foro de C/C++ en Foros del Web. Buenas tardes distinguida comunida de forosweb, vuelvo por aqui de nuevo a pedir de su ayuda, xd tengo una duda estoy haciendo un programa de ...
  #1 (permalink)  
Antiguo 26/05/2014, 10:37
 
Fecha de Ingreso: enero-2014
Mensajes: 47
Antigüedad: 10 años, 3 meses
Puntos: 0
Salir de una funcion con la tecla ESC

Buenas tardes distinguida comunida de forosweb, vuelvo por aqui de nuevo a pedir de su ayuda, xd tengo una duda estoy haciendo un programa de registros de inventario, y quiisiera que cuando se presionara la tecla ESC la funcion retornara al main, tengo una idea de como hacerlo, me imagino que deberia crear una funcion y x cada dato que pida enviar ese argumento a la funcion no? o como lo harian uds? Gracias de antemano dejo la función que deseo que haga lo antes mencionado.

Código C:
Ver original
  1. puts("Numero del PC que desea agregar");
  2.     scanf("%s",&ctemp);
  3.    
  4.         if(atoi(ctemp)==0)
  5.         {
  6.         puts("Debe colocar solo numeros en el registro");
  7.         getch();
  8.         fclose(arc);
  9.         return 1;
  10.         }
  11.    
  12.     ntemp=atoi(ctemp);
  13.    
  14.                 if( (ntemp<1) || (ntemp>100))
  15.                 {
  16.                 puts("El numero de registro debe estar del 1 al 100");
  17.                 getch();
  18.                 system("cls");
  19.                 fclose(arc);
  20.                 return 1;
  21.                 }
  22.        
  23.        
  24.     fseek(arc,0,SEEK_END);
  25.     if(ftell(arc)!=0)
  26.     {
  27.         fclose(arc);
  28.         arc=fopen("lista.dat","rb");
  29.             if(arc==NULL)
  30.             {
  31.             puts("Error");
  32.             getch();
  33.             return 1;
  34.             }
  35.    
  36.         fread(&dat,sizeof(datos),1,arc);
  37.         while(!feof(arc))
  38.         {
  39.                 if(dat.n==ntemp)
  40.                 {
  41.                 puts("No  se pueden repetir los elementos del registro");
  42.                 getch();
  43.                 fclose(arc);
  44.                 return 1;
  45.                 }
  46.             fread(&dat,sizeof(datos),1,arc);
  47.         }
  48.    
  49.     }
  50.         fclose(arc);
  51.            
  52.     arc=fopen("lista.dat","ab");
  53.     if(arc==NULL)
  54.     {
  55.     puts("Error al abrir fichero");
  56.     exit(1);
  57.     }  
  58.  
  59.     dat.n=ntemp;
  60.  
  61.     puts("Marca ");
  62.     fflush(stdin);
  63.     fgets(dat.marca,20,stdin);
  64.         puts("Modelo");
  65.             fflush(stdin);
  66.     fgets(dat.modelo,20,stdin);
  67.         puts("Serial del case");
  68.         fflush(stdin);
  69.     fgets(dat.cas,20,stdin);
  70.         puts("Modelo del Procesador");
  71.         fflush(stdin);
  72.     fgets(dat.proc,20,stdin);
  73.         puts("Marca del procesador");
  74.         fflush(stdin);
  75.     fgets(dat.mproc,20,stdin);
  76.         puts("Velocidad del procesador");
  77.             fflush(stdin);
  78.     fgets(dat.vproc,20,stdin);
  79.         puts("Serial del monitor");
  80.                 fflush(stdin);
  81.     fgets(dat.mon,20,stdin);
  82.     puts("Serial del teclado");
  83.         fflush(stdin);
  84.     fgets(dat.tecl,20,stdin);
  85.         puts("Serial del mouse");
  86.                 fflush(stdin);
  87.     fgets(dat.mou,20,stdin);
  88.     puts("Serial del camara");
  89.             fflush(stdin);
  90.     fgets(dat.cam,20,stdin);
  91. puts("Serial del regleta");
  92.     fflush(stdin);
  93.     fgets(dat.reg,20,stdin);
  94.     puts("Serial de las cornetas");
  95.         fflush(stdin);
  96.     fgets(dat.cor,20,stdin);
  97.  
  98.         puts("Capacidad del memoria ram del equipo");
  99.         fflush(stdin);
  100.     fgets(dat.ram,20,stdin);
  101.     puts("Capacidad del disco duro del equipo");
  102.         fflush(stdin);
  103.     fgets(dat.discoduro,20,stdin);
  104.     system("cls");
  105.     puts("Especificaciones a nivel de red");
  106.     getch();
  107.         puts("Direccion ip del equipo");
  108.         fflush(stdin);
  109.     fgets(dat.ip,20,stdin);
  110.         puts("Direccion de la mascara subred del equipo");
  111.         fflush(stdin);
  112.     fgets(dat.subred,20,stdin);
  113.     system("cls");
  114.     puts("Especificaciones a nivel de software");
  115.     getch();
  116.         puts("Nombre del sistema operativo");
  117.         fflush(stdin);
  118.     fgets(dat.nso,20,stdin);
  119.         puts("Version del sistema operativo");
  120.             fflush(stdin);
  121.     fgets(dat.vso,20,stdin);
  122.         puts("Tipo del sistema operativo ");
  123.         fflush(stdin);
  124.     fgets(dat.tso,20,stdin);
  125.             puts("Licencia del sistema operativo ");
  126.     fflush(stdin);
  127.     fgets(dat.lso,20,stdin);
  128.         puts("Tamano en el disco duro del sistema operativo ");
  129.         fflush(stdin);
  130.     fgets(dat.discoso,20,stdin);
  131.         puts("Requirimiento de memoria ram del sistema operativo ");
  132.         fflush(stdin);
  133.     fgets(dat.soram,20,stdin);
  134.    
  135.         system("cls");
  136.     puts("Especificaciones a nivel de ofimatica");
  137.     getch();
  138.         puts("Nombre del paquete ofimatico");
  139.         fflush(stdin);
  140.     fgets(dat.nof,20,stdin);
  141.         puts("Version del paquete ofimatico ");
  142.         fflush(stdin);
  143.     fgets(dat.vof,20,stdin);
  144.         puts("Tipo del paquete ofimatico");
  145.             fflush(stdin);
  146.     fgets(dat.tof,20,stdin);
  147.         puts("Licencia del paquete ofimatico");
  148.     fflush(stdin);
  149.     fgets(dat.lof,20,stdin);
  150.         puts("Tamano en el disco duro para el paquete ofimatico ");
  151.     fflush(stdin);
  152.     fgets(dat.cof,20,stdin);
  153.         puts("Requirimiento de memoria ram del paquete ofimatico ");
  154.         fflush(stdin);
  155.     fgets(dat.rram,20,stdin);
  156.     system("cls");
  157.    
  158.    
  159.    
  160.    
  161.         printf("Esta seguro de agregar esta PC al registro?");
  162.         puts("1.- SI    2.-NO");
  163.         scanf("%d",&r);
  164.             if(r==1)
  165.             {
  166.             fwrite(&dat,sizeof(datos),1,arc);
  167.             }
  #2 (permalink)  
Antiguo 26/05/2014, 15:54
Avatar de vangodp  
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 10 años, 7 meses
Puntos: 38
Respuesta: Salir de una funcion con la tecla ESC

Para eso tienes la función getch() puedes obtener el carácter asc2 de la tabla.
el carácter de la tecla esc es 27 según la tabla.

Código C:
Ver original
  1. #include <stdio.h>
  2.  
  3. int main() {
  4.     char letra;
  5.     while ( ( letra = getch() ) != 27 ) {
  6.         printf ( "Valor de la tabla Ascii: %d\n", ( int ) letra );     
  7.         if ( letra == '@' ) { break; } //Pulsa @ para salir.
  8.     }  
  9.     printf ( "Tachaaaa..." );
  10.     return 0;
  11. }

El problema es que getch no funciona bien en todos los SO. Si no funciona incluya conio.h a ver si se soluciona.
He usado codeblocks con win7

Etiquetas: funcion, numero, programa, salir, tecla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:05.