Cita de: bash en 5 Junio 2015, 17:56 PMtengo cantidades monetarias en string y quiero agregarles en su debido lugar un caracter espeficio como son comas y puntos pero no me explota el programa cuando lo corroEl programa revienta porque no reservas memoria para la cadena resultante (1) y eso se manifiesta cuando tratas de escribir en NULL (2):
pior que seria eso ?
Código (c) [Seleccionar]
char *szTemp1 = NULL; /* 1 */
/* ... */
strncpy(szTemp1, szValue, 2); /* 2 */
Indicas que tratas de agregar comas Y puntos pero el fragmento de código sugiere que los puntos ya se agregaron, mejor aclara esa parte.
Si la cadena no contiene la parte decimal (".00" solo es ornato) una forma de agregarlos (sin validaciones y asumiendo la cadena de entrada contiene al menos un dígito) es:
Código (c) [Seleccionar]
char *addComma(char const *str)
{
size_t i;
char *p;
char *q;
i = strlen(str);
p = q = malloc(i + (i - 1) / 3 + 4);
while (1){
*q++ = *str++;
if (--i == 0)
break;
else if (i % 3 == 0)
*q++ = ',';
}
strcpy(q, ".00");
return p;
}
Un saludo