elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  scanf C - borland
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: scanf C - borland  (Leído 2,062 veces)
Carlosj1

Desconectado Desconectado

Mensajes: 2


Ver Perfil
scanf C - borland
« en: 24 Julio 2019, 06:41 am »

Como puedo hacer para que en vez de que el usuario ingrese el número del case, directamente le léa la número precionado?
Es decir, que en vez de escribir el número y darle enter, al precionar el número directamente valla a el case presionado


En línea

@XSStringManolo
Hacker/Programador
Colaborador
***
Conectado Conectado

Mensajes: 2.399


Turn off the red ligth


Ver Perfil WWW
Re: scanf C - borland
« Respuesta #1 en: 24 Julio 2019, 08:37 am »

Yo lo hago con hooks en windows api (windows.h) o keyevents en sdl según la plataforma. En linux creo que también se puede hacer con raw. También vi hace tiempo cuanto estaba haciendo un keylogger mucho código usando eof, pero es una basura, no pilla todas las pulsaciones.



En línea

Mi perfil de patrocinadores de GitHub está activo! Puedes patrocinarme para apoyar mi trabajo de código abierto 💖

Carlosj1

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: scanf C - borland
« Respuesta #2 en: 24 Julio 2019, 20:26 pm »

Ya hice lo que quería con la ayuda que no me diste, ahora la cosa es que mi inventario pueda modificar un artículo con espacio
Es decir, al crear un articulo, puede guardarmelo con el caracter espacio, pero al modificar el artículo que tiene espacio, no me lo lee, solo me lee la parte antes del espacio, al igual que eliminar

Código
  1. #include <stdio.h>
  2. #include <conio.h>
  3. #include <string.h>
  4. #include <stdlib.h>
  5. #include <windows>
  6. FILE *fp;
  7. FILE *fp1;
  8. struct inven{
  9.  char codigo[80];
  10.  char nombre[80];
  11.  char descrip[80];
  12.  char precio[85];
  13. }inventario;
  14.  
  15. //  ===  funciones ===
  16. void crear();
  17. void consultar();
  18. void modificar();
  19. void eliminar();
  20.  
  21.  
  22.  
  23. // ----------------PROGRAMA PRINCIPAL ----------------------------
  24. void main()
  25. {
  26.  
  27.  char resp;
  28.  
  29.  do
  30.  {
  31.    system("cls");
  32.    printf("\n\n\t\t\t* * * * * INVENTARIO * * * * *");
  33.    printf("\n\t\t---------------------------------------------------");
  34.    printf("\n\t\t\t      ALTA Y CONTROL DE PRODUCTOS   ");
  35.    printf("\n\t\t-------------------------------------------------\n\n\n\n");
  36.    printf("\t\t\t\t (1) Agregar  \n");
  37.    printf("\t\t\t\t (2) Consultar     \n");
  38.    printf("\t\t\t\t (3) Modificar             \n");
  39.    printf("\t\t\t\t (4) Eliminar              \n");
  40.    printf("\t\t\t\t (5) Salir         ");
  41.    printf("\n\n\t\t\t\tSeleccione una opci%cn: ",162);
  42.    resp=getch();
  43.    switch(resp)
  44. {
  45.  case '1': crear();
  46. break;
  47.  case '2': consultar();
  48. break;
  49.  case '3': modificar();
  50. break;
  51.  case '4': eliminar();
  52. break;
  53.  case '5' : exit(1);
  54.    }
  55.  }
  56.  while(resp!='6');
  57.  getch();
  58. }
  59. // === Funcion de crear un archivo/nuevo articulo ====
  60. void crear()
  61. {
  62.   system("cls");
  63.   char opcion = 's';
  64.   int i=0;
  65.   if ((fp=fopen("inventario.dat","ab"))==NULL)
  66.      printf("\n\n\n\n\t\t< < < Error de apertura de archivo inventario.dat   > > >");
  67.   else
  68.   {
  69.     while(opcion == 's'){
  70.        printf("\n\n Escriba el c%cdigo del producto que desea registrar (NO EXEDER DE 16 DIGITOS): ",162);
  71.        scanf("%[^\n]",&inventario.codigo);
  72.        fflush(stdin);
  73.        printf("\n\n Escriba el nombre del producto ");
  74.        scanf("%[^\n]", &inventario.nombre);
  75.        fflush(stdin);
  76.        printf("\n\n Escriba la descripci%cn del producto: ",162);
  77.        scanf("%[^\n]", &inventario.descrip);
  78.        fflush(stdin);
  79.        printf("\n\n Escriba el precio del producto: ");
  80.        scanf("%[^\n]",&inventario.precio);
  81.        fflush(stdin);
  82.        fwrite(&inventario, sizeof(inventario), 1, fp);
  83.        printf("\n\n\n\t\t Desea registrar otro producto? [s/n]: ");
  84.     scanf("%[^\n]",&opcion);
  85.        system("cls");
  86.         }
  87.         }
  88.         fclose(fp);
  89. }
  90.  
  91. //=================MODIFICAR
  92.  
  93. void modificar(){
  94. system("cls");
  95.      int opc,i=0;
  96.      char elim[66];
  97.      printf("\nIngrese el c%cdigo del producto que desea modificar: ",162);
  98.      scanf("%s",&elim);
  99.      fp=fopen("inventario.dat","r+b");
  100.  
  101. if(!fp)
  102.         printf("\n Error de apertura del archivo %cinventario.dat%c\n",34,34);
  103.      else{
  104.         while (((fread(&inventario, sizeof(inventario), 1, fp))!=0)&&i!=1){
  105.            if(!strcmp(inventario.codigo,elim)){
  106.  
  107.                printf("\n\nC%cdigo: %s\n",162,inventario.codigo);
  108.                printf("Nombre: %s\n",inventario.nombre);
  109.                printf("Descripci%cn: %s\n",162,inventario.descrip);
  110.                printf("Precio: %s\n",inventario.precio);
  111.  
  112.               printf ("\n %cQu%c desea modificar? ",168,130);
  113.               printf ("\n\n(1) C%cdigo\n",162);
  114.               printf("(2) Nombre\n");
  115.               printf ("(3) Descripci%cn\n",162);
  116.               printf("(4) Precio\n");
  117.               printf("(5) Salir\n");
  118.               printf("\nEscriba una opci%cn: ",162);
  119.               scanf("%d",&opc);
  120.  
  121.               switch (opc){
  122.                case 1:
  123.                  printf ("\nIngrese el nuevo C%cdigo: ",162);
  124.                  scanf("%s", &inventario.codigo);
  125.                  break;
  126.                case 2:
  127.                  printf ("\nIngrese el nuevo nombre: ");
  128.                  scanf("%s",&inventario.nombre);
  129.                  break;
  130.                case 3:
  131.                  printf ("\nIngrese la nueva descripci%cn: ",162);
  132.                    scanf("%s",&inventario.descrip);
  133.                  break;
  134.                case 4:
  135.                  printf ("\nIngrese el nuevo precio: ");
  136.                  scanf("%s",&inventario.precio);
  137.                  break;
  138.               }
  139.             fseek(fp,-sizeof(inventario),SEEK_CUR);
  140.             fwrite(&inventario,sizeof(inventario), 1, fp);
  141.             i=1;
  142.             fclose(fp);
  143.            }
  144.         }
  145.  
  146.      }
  147. }
  148. ///=======================================eliminar producto
  149. void eliminar()
  150.               {
  151.               char elim[70];
  152.               system("cls");
  153.       printf("\nIngrese el c%cdigo del producto que desea eliminar eliminar: ",162);
  154.         scanf("%s",&elim);
  155.                     fp=fopen("inventario.dat","r+b");
  156.                     fp1=fopen("inventario1.dat","wb");
  157.           if(!fp)
  158.   printf("\n Error de apertura del archivo inventario.dat\n");
  159.   else{
  160.         while (((fread(&inventario, sizeof(inventario), 1, fp))!=0)&&(inventario.codigo!=0)){
  161.                              if(strcmp(inventario.codigo,elim)){
  162.                                 fseek(fp1,sizeof(inventario),SEEK_END);
  163.                                 fseek(fp1,-sizeof(inventario),SEEK_CUR);
  164.                                 fwrite(&inventario,sizeof(inventario), 1, fp1);
  165.                        fclose(fp1);
  166.                                 fp1=fopen("inventario1.dat","r+b");
  167.                                 system("cls");
  168.                             printf ("\n\n\n\n\n\n\n\n\n\n\nEl producto se ha eliminado correctamente \n");
  169.                                 Sleep(500);
  170.                                 }
  171.  
  172.                           }
  173.                        fclose(fp);
  174.                     fclose(fp1);
  175.                        system("del inventario.dat");
  176.                        system("ren inventario1.dat inventario.dat");
  177.  
  178.                       }
  179.         }
  180. //// ====================================Consulta de productos//////////
  181. void consultar (){
  182.  
  183. int i;
  184. system("cls");
  185. FILE *invent;
  186. invent = fopen("inventario.dat", "r");
  187. if(invent == NULL)
  188. {
  189. printf("\nNo existe archivo inventario.dat");
  190. }
  191.       fread(&inventario, sizeof(struct inven), 1, invent);
  192.     printf("------------------------------------------------------------------\n");
  193.        printf("C%CDIGO   NOMBRE\t\tDESCRIPCI%cN\tPRECIO  \n",224,224);
  194.                       printf("------------------------------------------------------------------\n");
  195. while(!feof(invent)) //mientras no sea fin de archivo
  196. {
  197.      gotoxy(2,i);
  198.  printf("  %s      %s\t\t   %s\t\t       %s\n",inventario.codigo,inventario.nombre,inventario.descrip,inventario.precio);
  199.      gotoxy(9,i);
  200.       fread(&inventario, sizeof(struct inven), 1, invent);
  201.   }
  202.     fclose(invent);
  203. getch();
  204.  
  205.   }
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Duda con scanf
Programación C/C++
Caster 3 4,222 Último mensaje 29 Septiembre 2012, 13:01 pm
por Caster
Pregunta de C scanf
Programación C/C++
g0rg3d3l4s3lv4 3 2,737 Último mensaje 15 Marzo 2013, 04:21 am
por g0rg3d3l4s3lv4
scanf y gets « 1 2 »
Programación C/C++
m@o_614 16 8,397 Último mensaje 21 Julio 2013, 19:29 pm
por rir3760
sustituir scanf « 1 2 »
Programación C/C++
m@o_614 11 7,126 Último mensaje 17 Octubre 2013, 17:59 pm
por Eternal Idol
problema scanf
Programación C/C++
pMV2ere 4 3,234 Último mensaje 1 Noviembre 2013, 08:44 am
por vangodp
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines