por
pobrecito hablador
el Martes, 31 Octubre de 2006, 15:33h
(#836182)
Un clasico gotcha es hacer
char *strdest;
strdest = strsrc;
Una cosa así puede que funcione en Java (no sé) o Python o uno de esos... pero en C no hagas esto NUNCA con strings del tipo char*, usa strcpy!!!!!!
(por supuesto, antes tienes que reservar suficiente memoria en strdest). Quedaría algo así como:
char *strdest;
strdest = (char*)malloc(strlen(strsrc)+1);
strcpy(strdest, strsrc);
// whatever code
free(strdest); // libera la memoria al final del programa!
Es importante lo de reservar suficiente memoria, como dice la página del man (más claro no se puede ser):
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 ocurrir cualquier cosa.
Pero como dicen por ahí mucho mejor usar la clase string de c++, incluso haces el include pero no lo usas (?¿?¿?¿?¿).
Incluso te aconsejo usar templates para que la lista dinámica sea genérica y sirva para cualquier tipo de objeto.
Gotcha
(Puntos:0)char *strdest;
strdest = strsrc;
Una cosa así puede que funcione en Java (no sé) o Python o uno de esos... pero en C no hagas esto NUNCA con strings del tipo char*, usa strcpy!!!!!!
(por supuesto, antes tienes que reservar suficiente memoria en strdest). Quedaría algo así como:
char *strdest;
strdest = (char*)malloc(strlen(strsrc)+1);
strcpy(strdest, strsrc);
// whatever code
free(strdest); // libera la memoria al final del programa!
Re:Gotcha
(Puntos:2)( http://barrapunto.com/ | Última bitácora: Lunes, 15 Enero de 2007, 15:41h )
Pero como dicen por ahí mucho mejor usar la clase string de c++, incluso haces el include pero no lo usas (?¿?¿?¿?¿).
Incluso te aconsejo usar templates para que la lista dinámica sea genérica y sirva para cualquier tipo de objeto.
Optimizacion motores de busqueda [optimizacionbusqueda.com]