Ayuda con Extraer caracteres dek strftime

Iniciado por practi1, 27 Junio 2014, 05:35 AM

0 Miembros y 1 Visitante están viendo este tema.

practi1

BUENAS TENGO ESTE PROBLEMA Y YA NO SE COMO ENTRARLE.

ME PIDEN CREAR UN ARCHIVO .BIN Y LUEGO EL USUARIO DEBE COLOCAR UNA FECHA PUEDE SER DÍA MES O AÑO Y COMPARAR CON LA INFORMACIÓN DEL ARCHIVO  BIN  Y CREAR UN ARCHIVO DE TEXTO GUARDANDO LA INFORMACIÓN DE SOLO LOS ARCHIVOS QUE SEAN MAYORES A LA FECHA QUE EL USUARIO COLOCO



 PERO EL PROBLEMA ES ESTE :
CREO MI REGISTRO DE FECHA PARA LA STRUC

time_t tiempo = time(0);
struct tm *tlocal = localtime(&tiempo);
char e1.fecha[128];
strftime(e1.fecha,128,"%d/%m/20%y",tlocal);

cout<<e1.fecha<<endl; //  me muestra la fecha en que se guarda ese registro de esta manera 26/06/2014

ok al momento de ingresar el usuario una dia X ejemplo 23 como hago yo para tomar  de e1.fecha solo los dos dígitos que seria (26) para luego ser comparados

 para que me quede 26 SOLO  y poder comparar
if (23 >26)
{
y esc en el arch de texto
}

el problema es como separo 23  06 y 2014 para luego ser validados
con lo que coloque el usuario

por favor seria una gran ayuda ya que tengo dias tratando y no puedo  :huh:

engel lex

no escribas el titulo y tema en mayusculas es "de mal gusto"...

publica el codigo dentro de etiquetas GeSHi (arriba de los emoticones a la derecha)

lee las reglas

trata de explicarte más exactamente que es lo que necesitas porque realmente no entendí :s
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

practi1

ok a ver si me explico mejor quiero que la variable que tenga la fecha la pueda separar pero no se como  :-(  eso es lo q necesito

es decir si  char fecha[128]= 25/05/2014

quiero saber como separar de esa cadena de caracteres el 25 el 05 y el 2014 eso es lo q quiero 

engel lex

no puedes simplemente en lugar de matarte separando el string usar strftime y sacar solo el dia, el mes o el año por independiente? estás usando "%d/%m/20%y", podrías simplemente usar %d para el dia...
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

leosansan

#4
Cita de: practi1 en 27 Junio 2014, 13:38 PM
ok a ver si me explico mejor quiero que la variable que tenga la fecha la pueda separar pero no se como  :-(  eso es lo q necesito

es decir si  char fecha[128]= 25/05/2014

quiero saber como separar de esa cadena de caracteres el 25 el 05 y el 2014 eso es lo q quiero  

Una forma sería con sscanf:

Citar
dia = 25  mes = 5  anyo = 2014

Process returned 0 (0x0)

Código (cpp) [Seleccionar]
#include<stdio.h>

int main(){
 char fecha[128]= "25/05/2014";
 int dia, mes ,anyo;
 sscanf (fecha,"%d/%d/%d",&dia,&mes,&anyo);
 printf (" dia = %d  mes = %d  anyo = %d\n", dia, mes, anyo );
 return 0 ;
}


¡¡¡¡ Saluditos! ..... !!!!



practi1

wow gracias eso me sirvio de mucho pero una pregunta tengo q poner siempre "%d/%d/%d" ?? o es %d , %m , %y? esa es la unica duda  :o

engel lex

sscanf no está tomando formato de fecha, toma formato de scan de caracteres... %d significa "dígito", si quisieras tomar un carácter en general, fuera %c de char, y así con los demás tipos
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

practi1

ah ok tonces el %d es tomar los digitos ah muchas gracias ahora si me quedo claro