c - 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 位限制?如果是这样,有没有办法获得更多?
解决方案
推荐阅读
- powershell - 如何正确将密码提供程序设置为 New-SelfSignedCertificate?
- java - DynamicJasper:使用数组或列表作为没有对象的数据源
- c# - asp.net Button OnClick 事件在使用页面转换时不起作用
- git - 在 macosx 上的 github 上克隆、添加并提交到私有存储库
- android - 每当活动中发生任何事件时,Listview 都会复制自身
- java - 构建和运行任务未显示任何错误,但应用程序未启动
- javascript - 不使用时如何使下拉菜单折叠
- python - 如何使用 pandas 描述和可视化来自 mongoDB 的持续更改数据
- google-apis-explorer - Google Calendar API — 使用多个帐户登录时,事件的 htmlLink 属性无法正常工作
- javascript - 来自数组的 Javascript 无序列表