Separación de coma en la salida

¿Cómo puedo obtener una coma entre los dígitos de un número dado en una entrada como 1000,10000,100000,1000000 y separa los dígitos de un número como 1,000 10,000 100,000 1,000,000 como salida

¿Hay alguna función (biblioteca) en C para hacer un progtwig para esto?

Usando la bandera de impresión no estándar y configurando locales:

 #include  #include  int main() { int value = 1234567; if (!setlocale(LC_ALL, "en_US.UTF-8")) { fprintf(stderr, "Locale not found.\n"); return 1; } printf("%'d\n", value); return 0; } 

Pero al usar x mod 3 y un dispositivo de Duff, puedes construir tu propia función (portátil):

 #include  #include  char *thousand_sep(long x) { char s[64], *p = s, *q, *r; int len; len = sprintf(p, "%ld", x); q = r = malloc(len + (len / 3) + 1); if (r == NULL) return NULL; if (*p == '-') { *q++ = *p++; len--; } switch (len % 3) { do { *q++ = ','; case 0: *q++ = *p++; case 2: *q++ = *p++; case 1: *q++ = *p++; } while (*p); } *q = '\0'; return r; } int main(void) { char *s = thousand_sep(1234567); printf("%s\n", s); free(s); return 0; } 

Salida:

 1,234,567 

EDITAR:

Si deseo hacer lo mismo en java entonces ??

Lo siento, no sé Java, tal vez útil (en javascript usando regex):

 Number.prototype.thousand_sep = function(decs){ var n = this.toFixed(decs).toString().split('.'); n[0] = n[0].replace(/\B(?=(\d{3})+(?!\d))/g, ','); return n.join('.'); }; ... var x = 1234567; alert(x.thousand_sep(0)); 
  • Para la entrada, depende de usted leer los números enteros separados por comas. Yo usaría strtol() y saltearía la coma manualmente.
  • Para la salida, agregue ' al especificador de salida printf() adecuado, es decir, printf("%'d", 1000); debe imprimir el valor int 1000 como 1,000 . Esto depende de su localidad, consulte la página del manual para más detalles .

Para java (según lo solicitado por el OP en un comentario en alguna parte), use:

 String formattedString = NumberFormat.getInstance().format(number); 

Si necesitas un local específico:

 String formattedString = NumberFormat.getInstance(Locale.FRENCH).format(number); 

Si necesita otros formateadores de números (para moneda, porcentaje, etc.):

 NumberFormat.getCurrencyInstance().format(number); NumberFormat.getIntegerInstance().format(number); NumberFormat.getPercentInstance().format(number); 

[a cada uno de ellos se les puede pasar una configuración regional a]

Para un mayor control sobre las opciones de formato, puede cambiar a DecimalFormat :

 new DecimalFormat("0,000.00").format(number); 

Le recomiendo que explore ambas clases (NumberFormat y DecimalFormat) para comprender sus posibilidades.

No encuentro ninguna biblioteca que pueda resolver este problema.

He escrito algún código para hacer la operación requerida.

 #include "stdio.h" #include "string.h" void func (int in, char * modified_int) { char my_int[1000]; sprintf (my_int, "%d", in); int len = strlen(my_int); int curr_index = len + len/3 - 1; modified_int[curr_index+1] = '\0'; int modulo_3 = 0; for (int i = len-1; i >= 0; i--, curr_index--, modulo_3++) { char abc = my_int[i]; modified_int[curr_index] = abc; if ((modulo_3 == 2) && (i != 0)) { curr_index--; modified_int[curr_index] = ','; modulo_3 = -1; } } } int main () { char my_int[1000]; int n = 1000; func(n, my_int); printf("%s\n", my_int); return 0; } 

Por favor, hágamelo saber si no resuelve su problema.