printf
возвращает количество напечатанных символов. Таким образом, вы можете суммировать все возвращаемые значения вызовов printf
, чтобы получить сумму.
Вот ваш модифицированный код:
#include <stdio.h>
void fact_calc ( int n, int *count );
int main (void)
{
int number;
int count = 0;
scanf ("%d", &number);
int t = printf ("%d! = %d x", number, number);
if (t > 0) count += t;
fact_calc ( number, &count );
printf("\nTotal chars printed: %d\n", count);
}
void fact_calc ( int n, int *count )
{
static long long int total = 1;
if ( n != 2 && n >= 2 )
{
int t = printf (" %d x", n - 1);
if (t > 0) *count += t;
total *= n;
fact_calc ( n - 1, count );
}
else
{
total *= 2;
int t = printf (" %d = %lld", n - 1, total);
if (t > 0) *count += t;
}
}