Количество выводов в C - PullRequest
       28

Количество выводов в C

0 голосов
/ 18 апреля 2020

Ввод моей программы равен 6, а вывод - 6! = 6 x 5 x 4 x 3 x 2 x 1 = 720. Поэтому я хочу посчитать все символы в выводе, включая «х» и пробелы. И после этого я хочу напечатать * как номер выходного символа над выводом. Это код, который я использовал для факториала, но я не смог найти способ подсчета символов.

#include <stdio.h>

void fact_calc ( int n );

int main (void)
{
    int number;

    scanf ("%d", &number);
    printf ("%d! = %d x", number, number);
    fact_calc ( number );
}

void fact_calc ( int n )
{
    static long long int total = 1;

    if ( n != 2 && n >= 2 )
    {
        printf (" %d x", n - 1);
        total *= n;
        fact_calc ( n - 1 );
    }
    else
    {
        total *= 2;
        printf (" %d = %lld", n - 1, total);
    }
}

Ответы [ 3 ]

1 голос
/ 18 апреля 2020

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;
    }
}
0 голосов
/ 19 апреля 2020

функция: printf() возвращает количество отображаемых символов, чтобы вы могли просто отслеживать сумму этих возвращенных значений

0 голосов
/ 18 апреля 2020

Вы можете добавить число int, которое вы увеличиваете с каждым добавляемым символом к ​​выводу, или вы можете вывести его в файл, и считать этот размер файла getline().

...