如何找出阵列中有多少数字

时间:2015-03-11 12:39:32

标签: c arrays

编辑:好的,@ Mischo5500告诉了答案。谢谢大家,伙计们

如何找出除空格外数组中的数字?我的程序会找出数组的长度,直到用户输入为空格,这就是问题所在。所以,如果我插入" 10 20 300",长度将是2.我预期3,就像三个数字一样,插入了。我不知道,用户输入的数量是多少in。我已经尝试过strlen(p),这是同样的事情。你能帮助我吗?谢谢!

#include <stdio.h>
#include <stdlib.h>
#include <string.h>


int main()
{
float p[1000];
scanf("%f",p);
int length=(sizeof(p)/sizeof(float));
printf("%d",length);

return 0;
}

2 个答案:

答案 0 :(得分:1)

如果我正确(如果没有,则抱歉),您想要计算输入的浮点值的数量。您可以更容易地以字符串格式插入它们并在处理后将它们转换为float,如果您不知道将要输入的参数数量。以下是您的代码的外观,例如,浮点数是val变量,插入值的数量位于length变量。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>


int main()
{
    char p[1000];
    float val[1000];
    int length = 0;
    char* itr;

    fgets(p, sizeof(p), stdin);

    itr = strtok(p, " ");
    while(itr != NULL)
    {
        val[length] = atof(itr);
        itr = strtok(NULL, " ");
        length++;
    }

    printf("%d",length);

    return 0;
}

编辑:如果你想要第一个元素的“长度”,只需在第一个标记上使用strlen()

itr = strtok(p, " \n");
if(itr)
{
    length = strlen(itr);
    val[length] = atof(itr);
}

答案 1 :(得分:-1)

您可以以命令行参数的形式接收用户输入,这些参数将作为

传递给程序
int main(int argc, char *argv[])

这将为您提供整个论点。您可以将每个参数argv [i]转换为数字。