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

 

 


Tema destacado: Únete al Grupo Steam elhacker.NET


  Mostrar Mensajes
Páginas: [1]
1  Programación / Programación C/C++ / Re: scanf C - borland 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.   }
2  Programación / Programación C/C++ / 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
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines