другое решение, сохраняя результат в массиве int, максимальный размер, если 7 из-за длинного long int может обрабатывать числа в диапазоне от 9,223,372,036,854,775,807 до -9,223,372,036,854,775,807 note it is not an unsigned
функция нерекурсивной печати
static void printNumber (int numbers[8], int loc, int negative)
{
if (negative)
{
printf("-");
}
if (numbers[1]==-1)//one number
{
printf("%d ", numbers[0]);
}
else
{
printf("%d,", numbers[loc]);
while(loc--)
{
if(loc==0)
{// last number
printf("%03d ", numbers[loc]);
break;
}
else
{ // number in between
printf("%03d,", numbers[loc]);
}
}
}
}
вызов основной функции
static void getNumWcommas (long long int n, int numbers[8])
{
int i;
int negative=0;
if (n < 0)
{
negative = 1;
n = -n;
}
for(i = 0; i<7; i++)
{
if (n < 1000)
{
numbers[i] = n;
numbers[i+1] = -1;
break;
}
numbers[i] = n%1000;
n/=1000;
}
printNumber(numbers, i, negative);// non recursive print
}
тестовый вывод
-9223372036854775807: -9,223,372,036,854,775,807
-1234567890 : -1,234,567,890
-123456 : -123,456
-12345 : -12,345
-1000 : -1,000
-999 : -999
-1 : -1
0 : 0
1 : 1
999 : 999
1000 : 1,000
12345 : 12,345
123456 : 123,456
1234567890 : 1,234,567,890
9223372036854775807 : 9,223,372,036,854,775,807
в основном () классе
int numberSeperated[8];
long long int number = 1234567890LL;
getNumWcommas(number, numberSeperated );
если все, что нужно для печати, переместите int numberSeperated[8];
в функцию getNumWcommas
и назовите ее так getNumWcommas(number);