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

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


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

Desconectado Desconectado

Mensajes: 274



Ver Perfil
Capturar excepcion
« en: 5 Agosto 2013, 19:25 pm »

Buenas gente, tengo la siguiente funcion que guarda una subcadena en otra. El problema es que cuando la pifio con los indices el program genera un dump. No puedo usar strlen ni el caracter nulo para extrer la subcadena, porque la cadena original esta llena de nulos intermedios que tengo que conservar, asi que simplemente hago:

Código:
void subString(char *src,char *dest,int posInicial,int longitud)
{
for(int i=0;i<longitud;i++)
{
dest[i]=src[posInicial+i];
}
}

Como captura la excepcion que se genere cuando hago una referencia a un indice que no existe?

Muchas Gracias
Saludos


En línea

amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: Capturar excepcion
« Respuesta #1 en: 5 Agosto 2013, 22:40 pm »

Código
  1. Como captura la excepcion que se genere cuando hago una referencia a un indice que no existe?
C no comprueba los índices de los arrays, de modo que no puede saber si estás accediendo a una zona protegida o no (esto se hizo para ganar rendimiento, confiando en que el programador fuese lo bastante espabilado como para no acceder a posiciones fuera del array). Lo ideal esque te pasen el tamanyo de la segunda cadena y devuelvas un error si posInicial+Longitud > Tamanyo.

¿Estás en C o C++? El segundo tiene una clase string con muchas de estas cosas hechas:
http://www.cplusplus.com/reference/string/string/
http://www.cplusplus.com/reference/string/string/assign/
http://www.cplusplus.com/reference/string/string/substr/


En línea

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar
BlackZeroX
Wiki

Desconectado Desconectado

Mensajes: 3.158


I'Love...!¡.


Ver Perfil WWW
Re: Capturar excepcion
« Respuesta #2 en: 6 Agosto 2013, 01:31 am »

En lugar de esa función mejor...

Código
  1. const char src[] = "HolaMundo";
  2.      char dst[10] = {};
  3.    memcpy(dst, &src[3], 5); // El parametro posInicial no es necesario lo puedes calcular por fuera... en este caso es el indice 3
  4.    puts(src);
  5.    puts(dst);
  6.  

La excepción la puedes capturar con un if() pero debes tener guardada la longitud de el bloque de memoria reservado.

Dulces Lunas!¡.
« Última modificación: 6 Agosto 2013, 01:40 am por BlackZeroX (Astaroth) » En línea

The Dark Shadow is my passion.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Añadir excepción al firewall del sp2
Programación Visual Basic
LaN 2 4,863 Último mensaje 20 Septiembre 2005, 11:54 am
por LaN
Siempre me genera una excepcion
Ingeniería Inversa
Ch@CaL 2 2,304 Último mensaje 24 Enero 2007, 15:37 pm
por Ch@CaL
Excepcion SQLException
Java
al020594 4 2,756 Último mensaje 13 Enero 2013, 03:34 am
por Slider324
Lanzar excepcion « 1 2 »
Programación C/C++
Jaquieline_JJ 10 4,260 Último mensaje 24 Abril 2014, 00:54 am
por Jaquieline_JJ
Excepción con TomEE
Desarrollo Web
bertamax 0 2,247 Último mensaje 9 Diciembre 2014, 10:20 am
por bertamax
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines