Ver Mensaje Individual
  #1 (permalink)  
Antiguo 21/04/2015, 10:08
rdv316
Invitado
 
Mensajes: n/a
Puntos:
Validar 2 fechas guardadas en variables char [C]

Hola a todos.
¿Hay otra manera más práctica para hacer esto?, lo que se me antoja es separar día, mes y año castearlo a int y luego compararlas una a una.-
Dejo la función por si desean hacerme alguna observación.-

Código C:
Ver original
  1. void consultation(FILE *ptrFile, Super *super, int tamStructSuper){
  2.     char fechaIni[11], fechaFin[11], *p = NULL;
  3.     int ch, ok;
  4.     float totalPar = 0.0, totalCon = 0.0;
  5.    
  6.     do{
  7.         printf( "\n\n Ingrese INICIO de la consulta (formato ==> 11/04/2015)....: " );
  8.         fgets(fechaIni, 11, stdin);
  9.         if((p=strchr(fechaIni, '\n'))){
  10.             *p='\0';
  11.         }
  12.         else{
  13.             while((ch = getchar()) !='\n' && ch!=EOF);
  14.         }
  15.         ok = strlen(fechaIni);
  16.         if( ok != 10 || fechaIni[2] != '/' || fechaIni[5] != '/'){         
  17.             ok = 0;
  18.         }
  19.     }while(!ok);       
  20.  
  21.     do{
  22.         printf( "\n\n Ingrese FINAL de la consulta (formato ==> 11/04/2015).....: " );
  23.         fgets(fechaFin, 11, stdin);
  24.         if((p=strchr(fechaFin, '\n'))){
  25.             *p='\0';
  26.         }
  27.         else{
  28.             while((ch = getchar()) !='\n' && ch!=EOF);
  29.         }
  30.         ok = strlen(fechaFin);
  31.         if( ok != 10 || fechaFin[2] != '/' || fechaFin[5] != '/'){         
  32.             ok = 0;
  33.         }
  34.     }while(!ok);
  35.  
  36.     printf( "\n\n =======================================================" );
  37.     printf( " \n\n Fecha        Verduler%ca    Almac%cn     Total", 161, 130 );
  38.  
  39.     ok=0;
  40.     rewind( ptrFile);
  41.     while( fread( super, tamStructSuper, 1, ptrFile ) == 1 ){
  42.         if( super->fecha >= fechaIni && super->fecha <= fechaFin ){
  43.             ok++;  
  44.             totalPar = super->verduras + super->almacen;
  45.             totalCon += totalPar;  
  46.             printf( "\n%11s %12.2f %10.2f %9.2f", super->fecha,  super->verduras, super->almacen, totalPar);
  47.         }
  48.     }
  49.     if( ok > 0 ){
  50.         printf( "\n\n Total de la consulta.................$ %.2f", totalCon );
  51.     }else{
  52.         printf( "\n\n No  hay movimientos entre el %s al %s", fechaIni, fechaFin );
  53.     }
  54.     MENSAJE;       
  55.  
  56. }

Daniel