【发布时间】:2016-06-10 10:21:52
【问题描述】:
这里我的问题是计算从文件中获取输入的无限个整数的总和。文件在由空格分隔的行中包含无限个整数。如果这些,我还需要显示无效输入整数的输入包含任何其他字符或符号。我已经尝试过这段代码并且输出良好 这是我的代码....
void main()
{
int i=1,j,a[100000],total=0,r=0;
char discard,buffer[1024];
FILE *fp;
char filename[100];
scanf("%s",filename);
fp=fopen(filename,"r");
do
{
fscanf(fp,"%1024s%c",buffer,&discard);
r+=sscanf(buffer,"%d",&a[i]);
total+=a[i++];
} while(discard!='\n');
if(r==i-1)
{
printf("\n%d",total);
}
else
printf("\n Invalid Input");
}
代码执行良好。但这里的问题是代码超出了我的时间限制。请帮助我,以便我可以获得更好的代码
【问题讨论】:
-
显示输入文件的前 3-4 行。
-
对无限数量的整数求和总是需要无限的时间,因此违反了您的时间限制。
-
@ChristianJonassen OP 必须有一个惊人的硬盘驱动器,可以包含无限行数的文件... ;-)
-
首先,c 中
int类型变量的范围是从-32768 到32767,因此您不能将大于32767 的值存储在int类型的变量中。 -
我的输入文件可以是1 2 3 4 5 6 7 8 9 0 1 23 3 5
标签: c