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.-
void consultation(FILE *ptrFile, Super *super, int tamStructSuper){
char fechaIni[11], fechaFin[11], *p = NULL;
int ch, ok;
float totalPar = 0.0, totalCon = 0.0;
do{
printf( "\n\n Ingrese INICIO de la consulta (formato ==> 11/04/2015)....: " );
fgets(fechaIni, 11, stdin);
if((p=strchr(fechaIni, '\n'))){
*p='\0';
}
else{
while((ch = getchar()) !='\n' && ch!=EOF);
}
ok = strlen(fechaIni);
if( ok != 10 || fechaIni[2] != '/' || fechaIni[5] != '/'){
ok = 0;
}
}while(!ok);
do{
printf( "\n\n Ingrese FINAL de la consulta (formato ==> 11/04/2015).....: " );
fgets(fechaFin, 11, stdin);
if((p=strchr(fechaFin, '\n'))){
*p='\0';
}
else{
while((ch = getchar()) !='\n' && ch!=EOF);
}
ok = strlen(fechaFin);
if( ok != 10 || fechaFin[2] != '/' || fechaFin[5] != '/'){
ok = 0;
}
}while(!ok);
printf( "\n\n =======================================================" );
printf( " \n\n Fecha Verduler%ca Almac%cn Total", 161, 130 );
ok=0;
rewind( ptrFile);
while( fread( super, tamStructSuper, 1, ptrFile ) == 1 ){
if( super->fecha >= fechaIni && super->fecha <= fechaFin ){
ok++;
totalPar = super->verduras + super->almacen;
totalCon += totalPar;
printf( "\n%11s %12.2f %10.2f %9.2f", super->fecha, super->verduras, super->almacen, totalPar);
}
}
if( ok > 0 ){
printf( "\n\n Total de la consulta.................$ %.2f", totalCon );
}else{
printf( "\n\n No hay movimientos entre el %s al %s", fechaIni, fechaFin );
}
MENSAJE;
}
Saludos.
Daniel
¿Forma más práctica? Puedes hacer una estructura donde almacenar las fechas por partes, y hacer funciones acordes a esa estructura.
Hola ivancea96.
Gracias por ocuparte, lo que me propones es interesante sólo que antes lo voy a intentar de esta manera y veré que resulta.-
a = 30/01/2015
b = 01/02/2015
Ahora mismo tengo un barullo respetable para validar por ej. a[9] con b[9] cuando llegue a a[6] y b[6] sabré si el año es igual o distinto y luego continuar con el mes y si es igual continuar con el día.-
Saludos.
Daniel
Ese es el problema, que trabajar con char* no es tan intuitivo como trabajar con enteros. Creando una estructura podrás hacer comprobaciones simples.
Hola.
Tienes toda la razón, lo que pasa es que cuando uno está estudiando por querer reinventar la rueda o por desconocimiento cometemos esos errores.
Estoy haciendo la función para validar las fechas para la consulta, como hasta el momento tengo muchos if ni bien funcione la voy a exponer para que me digas (si lo deseas) como puedo optimizarla.-
Saludos.
Daniel
Hola.
Al fin encontré la solución y puedo continuar sin pérdidas de tiempo, no pongo el código porque lo encontré en otro foro y desconozco si se puede, sería interesante volcarlo aquí porque es muy conciso, unas pocas líneas, aclaro que lo digo para los que estamos estudiando porque todos los expertos de este foro seguramente lo conocen, de echo los autores son rir3760 y vangodp.- ;-) ;-) ;-)
Saludos.
Daniel