[C con Clase] Exepción con función strcat...

Steven Richard Davidson stevenrichard.davidson en gmail.com
Vie Sep 14 20:12:17 CEST 2007


Hola ERVA,

On 9/14/07, ERVA <abraxas_dragon en yahoo.com.mx> wrote:
> Hola, estoy usando VC++ para hacer un programa. En el uso la función "strcat", cuando lo ejecuto me lanza un exepción (la compilación me arroja sin errores).
>
> Estoy programando para Windows, para eso estoy usando VS 2005, pensé que tenía algún bug el entorno, entonces descargue MinGW, pero con el mismo resultado, pero para esto hice un programa más simple y aún así me lanzo la exepción.
>
> Dejo el código que usé para probar:
>
> -----------------------------
> #include <stdio.h>
> #include <string.h>
>
> int main(void)
> {
>    char *cad1 = "Hola ";
>    char *cad2;
>
>    printf("Cadena: %s\n", strcat(cad2, cad1));
>
>
>
>    return 1;
> }
> --------------------------------
>

El problema está en que pasas "basura" y a partir de ahí, tenemos más
"basura" y por tanto problemas. El puntero 'cad2' no tiene ningen
valor inicial y por tanto contiene un valor arbitrario e
indeterminado. Esto significa que 'cad2' apuntará a cualquier
dirección de memoria arbitraria. Como 'strcat()' escribirá en 'cad2',
el sistema operativo te ha denegado acceso a tal dirección de memoria
para la escritura.

Debes crear memoria dinbmicamente, o bien usar un array. Por ejemplo,

char cad2[32];

strcat( cad2, cad1 );


Espero haber aclarado la duda.

Steven




Más información sobre la lista de distribución Cconclase