Есть ли ограничение на количество символов в строке, которое может сканировать getchar? - PullRequest
0 голосов
/ 12 марта 2019

У меня есть задание создать программу, которая вычисляет итерационную цифровую сумму целого числа, например.делать цифровую сумму, пока результат не станет одной цифрой.Уловка в том, что число, которое они проверяют, намного больше, которое может быть сохранено в любом типе int (около 10 ^ 40000), поэтому моя идея состояла в том, чтобы сделать первую сумму, используя getchar (), складывая число число за цифрой.Мой код

#include <stdio.h>

int main(){
    long int n=0;
    int c;

    //first sum
    while((c=getchar())!=EOF && c!='\n'){
        n+=(c-'0');
    }

    //iterative summing
    long int s;
    do{
        s=0;
        while(n>0){
            s+=n%10;
            n/=10;
        }
        n=s;
    }while (n>=10);

    printf("%ld\n",s);
    return 0;
}

Он работал для сравнительно коротких чисел, однако через некоторое время сумма вышла бы неправильно.Поэтому я попытался установить переменную, которая увеличивалась бы при суммировании каждого символа, и она всегда показывала бы число 4095.

Итак, мой вопрос, есть ли 11-битное ограничение на количество символов, которое выможно получить из стандартного ввода с помощью getchar ()?Если так, есть ли способ получить больше?

...