• Miércoles 6 de Noviembre de 2024, 12:25

Autor Tema:  Captura De Datos  (Leído 978 veces)

nshica

  • Nuevo Miembro
  • *
  • Mensajes: 9
    • Ver Perfil
Captura De Datos
« en: Domingo 13 de Junio de 2004, 16:52 »
0
Hola a todos, necesito que alguien me de una idea sobre como puedo hacer una captura perfecta de datos.
Es decir si en un programa tenemos declarada una variable de tipo entero, que controle que el usuario solo introduzca enteros. Igual con caracteres y con numeros.
Espero q alguien me ayude. Gracias, un saludo.

nicokiki

  • Miembro MUY activo
  • ***
  • Mensajes: 298
    • Ver Perfil
Re: Captura De Datos
« Respuesta #1 en: Domingo 13 de Junio de 2004, 19:32 »
0
Hola!!!!

Podes trabajar desde linea de comando, donde los datos estaran en el argv o pidiendo datos al usuario y deberias usar, scanf(), getc(), gets(), cin >> , o lo q se te ocurra.
Luego para validar los datos recorre el char* donde cargas los datos y preguntas si es un numero o no usando isdigit()

Salu2!!!!!!

nshica

  • Nuevo Miembro
  • *
  • Mensajes: 9
    • Ver Perfil
Re: Captura De Datos
« Respuesta #2 en: Martes 15 de Junio de 2004, 13:34 »
0
Gracias por la explicacion, me fue muy util.
Ahora me surge un problema con dos funciones de mi programa, se supone que deben borrar y modificar en una estructura, pero no funcionan y no se porque es. Me podeis ayudar?? Gracias
Las pego.

void modificar (biblio libro)
{
  FILE *f;
  int codigo;
  int op;
  char univ[20];
  do{
   clrscr();
      gotoxy(21,3);
      textcolor(1);
      cprintf("ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»");
      gotoxy(21,4);
      cprintf("º                         º");
      textcolor(2);
      gotoxy(26,4);
      cprintf("MODIFICAR");
      textcolor(1);
      gotoxy(21,5);
      cprintf("ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ");
      textcolor(3);
      gotoxy(21,8 );
      cprintf(" 1. Por codigo");
      gotoxy(21,9);
      cprintf(" 2. Por Universidad");
      gotoxy(21,10);
      cprintf(" 3. Volver al Menu Principal");
      gotoxy(21,11);
      cprintf("Introduzca una opcion: ");
      op=getch();
      switch (op){
         case '1':
               if ((f=fopen("biblio.dat","r+b"))==NULL){
                  printf ("Error al abrir el fichero\n");
                  exit (0);
               }
               clrscr();
               gotoxy (4,3);
               printf ("Introduce el codigo del libro para modificar: \n");
               gotoxy (4,4);
               scanf ("%d",&codigo);
               fread(&libro,sizeof(libro),1,f);
               if (feof(f)){
                     printf ("No se ha encontrado el codigo introducido");
                     break;}
               else{
                     if (codigo==libro.codigo){
                        clrscr();
                        gotoxy (4,3);
                        cprintf ("Introduce el nuevo titulo: \n");
                        gotoxy (4,4);
                        gets (libro.titulo);
                        gotoxy (4,5);
                        cprintf ("Introduce el nuevo autor: \n");
                        gotoxy (4,6);
                        gets (libro.autor);
                        gotoxy (4,7);
                        cprintf ("Introduce la nueva universidad: \n");
                        gotoxy (4,8 );
                        gets (libro.uni);
                        fwrite (&libro,sizeof(libro),1,f);}
                   }


               fclose(f);
               break;
         case '2':
               if ((f=fopen ("biblio.dat","r+b"))==NULL){
                  printf ("Error al abrir el fichero\n");
                  exit (0);
               }
               clrscr();
               gotoxy (4,3);
               cprintf ("Introduce la universidad para modificar: \n");
               gotoxy (4,4);
               gets (univ);

               fread (&libro, sizeof (libro),1,f);
               if (feof(f)) {
                     printf ("No se ha encontrado la universidad");
                     break;}
                  else{
                     if (univ==libro.uni){
                        clrscr();
                        gotoxy (4,3);
                        printf ("Introduce el nuevo titulo: \n");
                        gets (libro.titulo);
                        gotoxy (4,4);
                        printf ("Introduce el nuevo autor: \n");
                        gets (libro.autor);
                        gotoxy (4,5);
                        printf ("Introduce la nueva universidad: \n");
                        gets (libro.uni);
                        fwrite (&libro,sizeof(libro),1,f);
                        }
                       }
               fclose (f);
               break;
         case '3':
               break;
         default:
                textcolor(4);
                gotoxy(45,14);
                cprintf("Opcion incorrecta");
                textcolor(3);
                sleep(1);
                break;
      }//switch
   }while (op!='3');
}
//--------------funcion borrar-----------------
void borrar(int cod)
{
   FILE *f,*f1;
   biblio libro;
   int ok;
   if ((f=fopen("biblio.dat","r"))==NULL){
      printf ("Error en la apertura del fichero\n");
      exit (0);
   }
   if ((f1=fopen("temporal.dat","w"))==NULL){
      printf ("Error en la apertura del fichero\n");
      exit (0);
   ok=0;
   while(1){
      fread(&libro,sizeof(libro),1,f);
      if (feof(f))
         break;
      else
         if(cod!=libro.codigo)
            fwrite (&libro,sizeof(libro),1,f1);
         else
            ok=1;
   }
   if(!ok&&feof(f)){
      cprintf ("El codigo introducido no existe\n");
      sleep (2);}
   else
      if(ok){
         fclose(f);fclose(f1);
         remove("biblio.dat");
         rename("temporal.dat","biblio.dat");
      }
   getch();
}
}