如何查找输入的长度

时间:2016-07-27 08:22:25

标签: c while-loop

我正在尝试衡量我的输入数量。 如果我输入以下行:1 2 65 3 4 7, 我希望输出为8。但我得到的是1 2 3 4。

#include <stdio.h>
int main(void) {
    int data;
    int i = 1;   
    while (i <= sizeof(data)) {
        scanf("%d", &data)
        printf("%d", i);
        i++;
    }
}

4 个答案:

答案 0 :(得分:3)

您正在打印与输入无关的i。所以无论你输入什么,你都会得到1234

sizeof(data)sizeof(int)相同,即系统中值为4的常量。

如果您想计算数字的数量而不关心个别数字的价值,您可以这样做:

#include <stdio.h>
#include <ctype.h>

int main(void) {
    char s[1024];
    char* p;
    int i = 0;   
    fgets(s, 1024, stdin);
    p=s;

    while (*p != '\0')
    {
        if (!isdigit(*p))
        {
            p++;
        }
        else
        {
            i++;  // Found new number

            // Search for a delimiter, i.e. skip all digits
            p++;
            while (*p != '\0' && isdigit(*p))
            {
                p++;
            }
        }   
    }

    printf("We found %d numbers", i);

    return 0;
}

输出:

We found 6 numbers

请注意,此代码将接受任何非数字输入作为分隔符。

答案 1 :(得分:1)

将scanf放在while循环之前,并在while循环之后移动printf。

答案 2 :(得分:-1)

我也根据我的公开提供解决方案。

#include <stdio.h>
int main(void) {
    int data = 1;
    int i = 0;   
    // here data != 0 is trigger point for end input,
    // once you done with your inputs you need to last add 0 to terminate
    while (data != 0) {
        scanf("%d", &data)
        printf("Collected Data: %d", data);
        i++;
    }
    printf("Total number of inputs are %d.", i);
}

希望此解决方案可以帮助您。

答案 3 :(得分:-1)

这是我的解决方案:

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

int main() {
    int i = 0;
    int data[100]; // creating an array

    while(1) { // the loop will run forever
        scanf("%d", &data[i]);

        if (data[i] == -1) { //unless data[i] = -1
            break; // exit while-loop
        }

        i++;
    }

    printf("%d\n", data[2]); // print 2nd integer in data[]

    return 0;
}

输入int后,不要忘记按Enter键。该计划的输出:

2
56
894
34
6
12
-1

894

希望有所帮助。 :)