C/Visual C - Como obtener substring de cadena

 
Vista:

Como obtener substring de cadena

Publicado por valentin (3 intervenciones) el 26/09/2006 00:00:09
Quisiera de que manera puedo realizar lo siguiente, ya que he estado buscando
en las fuciones c de cadenas pero no encuentro nada que me lo permita

tengo la siguiente cadena de texto

cadena = "01/06/98"

y deseo consultar para los 2 primeros digitos de esta cadena "01"
consultar si es menor a 30, para ello se que debo
utilizar la fucion atoi que me tranforma caracter a integer, pero lo que
no se hacer es poder tomar el substring de esa cadena como en otros
lenguajes donde puede uno lo puede hacer con left(cadena,2) o
bien substr(cadena,1,2) por ejemplo

Ahora si saben de alguna funcion que me valida de manera completa la
fecha mucho mejor, ya que la idea es poder validar si la fecha
esta con los valores adecuados.

Bueno espero vuestra gentil ayuda

Gracias

Saludos

Valentin
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Como obtener substring de cadena

Publicado por fernando.gomez (1603 intervenciones) el 26/09/2006 00:58:41
Lo más fácil sería:

char dia[3] = "";

dia[0] = cadena[0];
dia[1] = cadena[1];
dia[2] = 0;
int i = atoi(dia);

Para buscar subcadenas, existe la función strstr.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Como obtener substring de cadena

Publicado por Adrián Vaca (8 intervenciones) el 26/09/2006 03:02:03
Bien, vamos por partes:

1) Para lo de substring de una cadena puedes usar la siguiente función que he hecho:

void substring(char *cadena, char *subcadena, int inicio, int longitud)
{
int i;

for(i=0; i<longitud && inicio+i<strlen(cadena); i++)
subcadena[i] = cadena[inicio+i];

subcadena[i] = '\0';
}

En tu caso puedes usar:

char *cadena = "01/06/98";
char *subcadena;

substring(cadena, subcadena, 0, 2);

int mes = atoi(subcadena);

Lo cual te devolvera el número 30

2) Ahora si lo que deseas es trabajar con fechas y saber si es valida o no, es mejor usar la estructura: "date" definida en "dos.h", la cual te permite manejra fechas.

Y si quieres saber si la fecha es valida o no, lee la siguiente FAQ que he publicado en mi sitio:

http://www.programacionenc.net/modules.php?name=faq&af_op=ShowDetail&id=36#36

Ahi muestro como validar fechas, tomando en cuenta años bisiestos y todo eso.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Muy agracedido por vuestra ayuda..

Publicado por valentin (3 intervenciones) el 27/09/2006 03:47:55
Les agradezco ambos vuestra desinteresada ayuda

Valentin
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Muy agracedido por vuestra ayuda..

Publicado por h0aX (9 intervenciones) el 27/09/2006 16:01:33
Esta es la forma en que lo haria encapsulada en una funcion.
Yo uso compilador de la borland pero no creo que eso sea relevante.

bool CheckDate(String Date)
{
bool result = false;
int sTem = StrToInt(Date.SubString(1,2));
if (sTemp < 30) {
result = true;
}
return result;

}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar