C vs C++ [Civil War]

Iniciado por AlbertoBSD, 3 Mayo 2016, 23:23 PM

0 Miembros y 1 Visitante están viendo este tema.

class_OpenGL

Eso me pasa por las prisas xD En cualquier caso, es muy sencillo usar sprintf para concatenar cadenas

Programador aficionado. Me quiero centrar en programar videojuegos. La API que uso para crearlos es OpenGL

geeke

Si pero hay que tener cuidado con esta, porque no comprueba el limite del buffer por lo tanto fácilmente podríamos escribir mas allá de lo permitido (desbordamiento de buffer). Esto no pasaría con snprintf porque tiene un parámetro adicional que índica el numero máximo de bytes a escribir

AlbertoBSD

Concuerdo con Geeke, de hecho que bueno que lo menciona, mi código actual es este:

char *concat(char *s,...) {
va_list args;
char *buffer;
buffer = calloc(strlen(s)*1000,sizeof(char));
va_start(args, s);
vsprintf(buffer,s, args);
va_end(args);
return buffer;
}


Lo voy a cambiar por:

char *concat(char *s,...) {
va_list args;
unsigned int l;
char *buffer;
l = strlen(s)*1000;
buffer = calloc(l,sizeof(char));
va_start(args, s);
vsprintf(buffer,l,s, args);
va_end(args);
return buffer;
}
Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW

+ 1 Oculto(s)

programo en php, java, js, ahora estoy poniendo mucho empeño en c++, anterior mente hice algunas cosas pequeñas en c++ y me gusto mucho

c++ es la ley

class_OpenGL

Lo que más me gusta de C++, con diferencia, es la sobrecarga y el paso por referencia... Cuando digo sobrecarga, digo tanto sobrecarga de operadores como de funciones

Programador aficionado. Me quiero centrar en programar videojuegos. La API que uso para crearlos es OpenGL