Advertisement
Joporezka1

sprintf char*

Apr 12th, 2022
592
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.11 KB | None | 0 0
  1.  
  2. bool is_integer_eps(float k, float eps)
  3. {
  4.     return k - floor(k) < eps;
  5. }
  6. void reverse_substr(char* &str,int start,int end)
  7. {
  8.     int i, j;
  9.     for (i = start, j = end; i < j; i++, j--)
  10.     {
  11.         char temp = str[i];
  12.         str[i] = str[j];
  13.         str[j] = temp;
  14.     }
  15. }
  16.  
  17. char* native_sprintf(float k)
  18. {
  19.     char* str = new char[100];
  20.     int iter = 0;
  21.     //sprintf(str, "%f", k);
  22.     int data1 = (int)k,data2; //целая часть числа
  23.     float data2f = k - data1; //дробная часть числа
  24.     while(!is_integer_eps(data2f,0.001))
  25.         data2f *= 10;
  26.     data2 = (int)data2f;
  27.     while(data1>0)
  28.     {
  29.         str[iter] = data1%10 + '0';
  30.         data1 /= 10;
  31.         iter++;
  32.     }
  33.     reverse_substr(str,0,iter-1);
  34.     str[iter] = '.';
  35.     iter++;
  36.     int iter_point = iter;
  37.     while(data2>0)
  38.     {
  39.         str[iter] = data2%10 + '0';
  40.         data2 /= 10;
  41.         iter++;
  42.     }
  43.     reverse_substr(str,iter_point,iter-1);
  44.     str[iter] = '\0';
  45.     return str;
  46. }
  47.  
  48. void PrintStr(char* str)
  49. {
  50.     for(int i=0;i<sizeof(str);i++)
  51.         cout<<str[i];
  52. }
  53.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement