如何获取一些NUMERIC用户输入和不知道的范围

时间:2015-08-27 17:16:11

标签: c

我想在NUMERIC FORMAT中输入一些由空格分隔的输入并将其放入数组中......当我按下Enter时,应该有一个终止,并且数组中应存在预先存储的值.... / p>

输入格式:1 2 3 4 5 {按Enter}输出格式:12345

  

以上输出格式......

     

arr [0] = 1,arr [1] = 2,arr [2] = 3,arr [3] = 4,arr [4] = 5

输入格式:9 8 7 6 5 4 3 2 1 {按Enter键}输出格式:987654321

    #include<stdio.h>
    int main()
    {

        int num[100],a,i,j;
        i=0;

        while(scanf("%d",&a))
        {
            num[i]=a;
            i++;
        }

        for(j=0;j<i;j++)
        {
            printf("%d",num[j]);
        }

    return 0;
    }

上面的代码需要一个非数字值来终止.......并且工作得很好...... !!!

    #include<stdio.h>
    int main()
    {
        int i=1;
        char ch,arr[20];

        scanf("%c",&ch);
        arr[0]=ch;

        while (ch != '\n')
        {
            scanf("%c",&ch);
            arr[i]=ch;
            arr[i+1]='\0';
            i++;
        }
        printf("%s",arr);

    return 0;
    }

以上只适用于字符输入.....并且工作正常...... !!!

我希望按ENTER键终止... FOR NUMERIC Input

2 个答案:

答案 0 :(得分:0)

你只需要一个char变量

以下是代码:

#include <stdio.h>

int arr[100];

int main()
{
    char ch;
    int num;
    int i = 0, c;
    while (scanf("%d%c", &arr[i++], &ch))
        if (ch == '\n') break;

    for (c = 0; c < i; c++)
        printf("%d ", arr[c]);

    return 0;
}

答案 1 :(得分:0)

这是我的解决方案。它接受数字或空格,制表符,但在newline或字母字符处停止。

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

int main()
{
    char ch;
    unsigned num = 0;
    while (1 == scanf("%c", &ch)) {
        if (ch == '\n' || isalpha(ch))
            break;
        if (isdigit(ch))
            num = num * 10 + ch - '0';
    }

    printf ("Number is %u\n", num);
    return 0;
}