×

Welcome to TagMyCode

Please login or create account to add a snippet.
0
0
 
0
Language: Text
Posted by: Muhammad Mehdi
Added: Mar 3, 2017 7:26 AM
Views: 2251
Tags: no tags
  1. int thousandsep(double in, char* out_str, size_t out_len, unsigned int precision) {
  2.     char in_str[128], int_str[128], format[32];
  3.     size_t dlen, mod, i, j;
  4.     int c;
  5.  
  6.     snprintf(format, sizeof format, "%%.%df", precision);
  7.     snprintf(in_str, sizeof in_str, format, in);
  8.     snprintf(int_str, sizeof int_str, "%d", (int) in);
  9.  
  10.     dlen = strlen(in_str);
  11.     mod = strlen(int_str) % 3;
  12.     c = (mod == 0) ? 3 : mod;
  13.  
  14.     for (i = 0, j = 0; i < dlen; i++, j++, c--) {
  15.         if (j >= out_len - 1) {
  16.             /* out_str is too small */
  17.             return -1;
  18.         }
  19.  
  20.         if (in_str[i] == '.') {
  21.             c = -1;
  22.         } else if (c == 0) {
  23.             out_str[j++] = ',';
  24.             c = 3;
  25.         }
  26.  
  27.         out_str[j] = in_str[i];
  28.     }
  29.     out_str[j] = '\0';
  30.  
  31.     return 0;
  32. }