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

 

 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Strtok--Dividir Fecha
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Strtok--Dividir Fecha  (Leído 1,929 veces)
eduardo1012

Desconectado Desconectado

Mensajes: 32


Ver Perfil
Strtok--Dividir Fecha
« en: 10 Noviembre 2016, 00:22 am »

Buenas, Como podría hacer para validar una fecha, es decir tomar la cadena obtener los números y hacer la comparaciones para permitir menos de 31 días, menos de 12 meses. Tengo este código pero realmente no se como almacenar en una variable temporal y asi hacer las validaciones.
Código
  1. #include <iostream>
  2. using std::cout;
  3. using std::endl;
  4. #include <cstring>
  5. int main()
  6. {
  7.  char fecha[]="12/17/19";
  8.  char *ptr;
  9.  cout << fecha << endl;
  10.  ptr = strtok(fecha,"/");
  11.  while(ptr != NULL)
  12.    {
  13.      cout << ptr << endl;
  14.      ptr = strtok(NULL, "/");
  15.    }
  16.  return 0;
  17. }


En línea

MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: Strtok--Dividir Fecha
« Respuesta #1 en: 10 Noviembre 2016, 14:30 pm »

Usa sscanf. Algo así:
sscanf(fecha, "%d/%d/%d", &dia, &mes, &anyo);


En línea

eduardo1012

Desconectado Desconectado

Mensajes: 32


Ver Perfil
Re: Strtok--Dividir Fecha
« Respuesta #2 en: 10 Noviembre 2016, 19:26 pm »

Es un proyecto en el cual tengo que solo permita la entrada de numeros y el slash en las posiciones correspondientes. Pero si lo hago como dices no le encuentro como validar todo.
Que escriba por ejemplo 21*12-06 cuando deberia ser DD/MM/AN
En línea

geeke

Desconectado Desconectado

Mensajes: 93


Ver Perfil
Re: Strtok--Dividir Fecha
« Respuesta #3 en: 10 Noviembre 2016, 19:38 pm »

Que escriba por ejemplo 21*12-06 cuando deberia ser DD/MM/AN

Verifica el retorno de scanf

Código
  1. if(scanf("%d/%d/%d", &dia, &mes, &anyo) != 3)
  2.    //formato incorrecto
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines