计算C中传递给scanf()的参数

计算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

有没有办法计算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;

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;