elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  append , . a un string existente
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: append , . a un string existente  (Leído 1,953 veces)
bash

Desconectado Desconectado

Mensajes: 258



Ver Perfil
append , . a un string existente
« en: 5 Junio 2015, 17:56 pm »

Buenas a todos en mi afan de aprender me he topado con lo siguiente
tengo 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 corro
pior que seria eso ?

abajo dejo parte del codigo ,gracias por los consejos.
Código
  1. char *addComma(char *szValue){
  2.   char *szReturn =  NULL;
  3.   char *szTemp1  =  NULL;
  4.   char *szTemp2  =  NULL;
  5.    int inLength = strlen(szValue);
  6.  
  7.   /*
  8.     *  10000.00 -->> 10,000.00
  9.     *  9000.00  -->>  9,000.00
  10.     *
  11.     *
  12.     *
  13.     * */
  14.  
  15.  
  16.  
  17.   if(inLength >= 6 ){
  18. switch(inLength){
  19. case 7:
  20. strncpy(szTemp1,szValue, 2 );
  21. strncat(szTemp1, ",", 1);
  22. strncat(szTemp1, szValue+3,3);
  23. strncpy(szTemp1, ".", 1);
  24.  
  25. break;
  26. case 5:
  27.  
  28. }  
  29.   }
  30.  
  31.   return szTemp1;
  32. }


solo importa la parte que hago strncat , strncpy


En línea

gracias por responder mis dudas
rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: append , . a un string existente
« Respuesta #1 en: 12 Junio 2015, 04:29 am »

tengo 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 corro
pior que seria eso ?
El programa revienta porque no reservas memoria para la cadena resultante (1) y eso se manifiesta cuando tratas de escribir en NULL (2):
Código
  1. char *szTemp1 = NULL; /* 1 */
  2.  
  3. /* ... */
  4.  
  5. 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
  1. char *addComma(char const *str)
  2. {
  3.   size_t i;
  4.   char *p;
  5.   char *q;
  6.  
  7.   i = strlen(str);
  8.   p = q = malloc(i + (i - 1) / 3 + 4);
  9.  
  10.   while (1){
  11.      *q++ = *str++;
  12.  
  13.      if (--i == 0)
  14.         break;
  15.      else if (i % 3 == 0)
  16.         *q++ = ',';
  17.   }
  18.   strcpy(q, ".00");
  19.  
  20.   return p;
  21. }

Un saludo


En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problema al hacer un append. Help pls
Programación Visual Basic
El_Marine 2 1,308 Último mensaje 9 Agosto 2006, 19:10 pm
por El_Marine
Añadir datos contiguos con Append
Programación Visual Basic
rugBy_02 3 2,641 Último mensaje 15 Marzo 2009, 16:41 pm
por rugBy_02
append jquery
Desarrollo Web
kakashi20 2 2,053 Último mensaje 30 Noviembre 2012, 02:05 am
por kakashi20
agregar string a fichero existente « 1 2 »
Java
omar_cdg 10 5,646 Último mensaje 31 Julio 2015, 02:53 am
por omar_cdg
Duda append python
Scripting
15-19 4 1,912 Último mensaje 27 Abril 2017, 16:42 pm
por 15-19
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines