计算C中传递给scanf()的参数
有没有办法计算C中传递给计算C中传递给scanf()的参数,c,arrays,count,arguments,scanf,C,Arrays,Count,Arguments,Scanf,有没有办法计算C中传递给scanf()的参数数?特别是,在通过scanf()分配int数组时。 例如: int array[1000], i; for(i=0;i<1000;i++) scanf("%d",&array[i]); int数组[1000],i; 对于(i=0;i我不认为有一种内置的方法可以做到这一点,但为什么不创建一个计数器,在scanf成功返回时递增,否则就中断循环 int scanf_counter = 0; int array[1000], i; f
scanf()
的参数数?特别是,在通过scanf()
分配int
数组时。
例如:
int array[1000], i;
for(i=0;i<1000;i++)
scanf("%d",&array[i]);
int数组[1000],i;
对于(i=0;i我不认为有一种内置的方法可以做到这一点,但为什么不创建一个计数器,在scanf成功返回时递增,否则就中断循环
int scanf_counter = 0;
int array[1000], i;
for(i=0;i<1000;i++) {
if(scanf("%d",&array[i] > 0) {
scanf_counter++;
} else {
break;
}
}
仔细查看scanf()片段,因此:
包括
int main()
{
双a[100000],mx=0
int i,j,c=0;
printf("Enter as many numbers as you wish . Press Ctrl+D or any character to stop inputting :\n");
for(i=0;i<100000;i++)
{
if((scanf("%lf",&a[i]))==1)
c++;
//else break;
}
for(j=0;j<c;j++)
{
if(a[j]>mx) mx=a[j];
}
printf("You have inserted %d values and the maximum is:%g",c,mx);
return 0;
inti,j,c=0;
printf(“输入任意数量的数字。按Ctrl+D或任意字符停止输入:\n”);
对于(i=0;i您能否澄清您到底想做什么?scanf
返回“成功匹配和分配的输入项数”。这不是您所要求的,但可能接近您想要的。scanf自动返回分配的变量数。因此int count=scanf(“%d”)&a)
如果成功分配a,将返回1。同样,您也可以使用您的状态。我想我更好地理解您想要做什么。请检查我的编辑。当scanf返回>0时,成功设置了一个值,您可以增加计数器。否则,只需中断循环,您应该在scanf\u co中保留正确数量的值循环中断后卸载。@user4577978请澄清您在寻找什么。否则我们将无法帮助您。不客气,您介意选择我的答案作为已接受的答案,因为它似乎对您有所帮助吗?我的答案左侧的上下箭头附近应有一个复选标记。如果您单击该选项,它将变为绿色,并且将l将我的答案显示为已接受。在堆栈上放置400000字节(100000*sizeof int)是一个非常糟糕的主意。建议将数组放置在文件全局地址空间中。我发现您在答案中放置$include语句时遇到了与我类似的问题。有人知道修复方法吗?
int i,j,c=0;
printf("Enter as many numbers as you wish . Press Ctrl+D or any character to stop inputting :\n");
for(i=0;i<100000;i++)
{
if((scanf("%lf",&a[i]))==1)
c++;
//else break;
}
for(j=0;j<c;j++)
{
if(a[j]>mx) mx=a[j];
}
printf("You have inserted %d values and the maximum is:%g",c,mx);
return 0;