首页 > 解决方案 > getchar 可以扫描的一行中有多少个字符有限制吗?

问题描述

我有一个任务来制作一个计算整数的迭代数字和的程序,例如。进行数字和,直到结果为单个数字。问题是他们测试的数字要大得多,可以存储在任何 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 的数量。

所以我的问题是,使用 getchar() 从 stdin 获得多少个字符是否有 11 位限制?如果是这样,有没有办法获得更多?

标签: cstdiogetchar

解决方案


推荐阅读