[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [OT] lista para desarrolladores de C en linux (en castellano)



On Tue, Mar 11, 2003 at 04:11:36PM -0300, Matías nnss wrote:
> char * regreso; strcpy(regreso, "");

El problema ahí lo tendrás si no estás reservando memoria para el
string regreso, o si no estás reservando suficiente memoria para lo que
vas a escribir ahí con el strcpy, pues este no reserva memoria, sólo
copia. Sacado del man de strcpy():

"Si la cadena destino de un strcpy() no es bastante  grande
       (esto  es, si el programador fue estúpido o perezoso, y no
       comprobó el tamaño antes de la copia) entonces puede ocur­
       rir cualquier cosa.  Provocar el desbordamiento de cadenas
       de caracteres de longitud fija es una técnica favorita  de
       los piratas informáticos."

Una opción (a parte de usar tú mismo el malloc) para reservar la memoria
justa que necesitas para la cadena
es utilizar strdup, que te crea un duplicado del string que le pases
reservando la memoria necesaria:  char *strdup(const char *s);

> Pero bueno, eso me lo merezco por querer aprender C yo solito.

Equivocarse es una buena forma de aprender así que no desesperes.

Un saludo.



Reply to: