如何将每个数字扫描到一个数组插槽?

时间:2014-06-09 16:07:09

标签: c arrays scanf

我试图将每个单独的数字扫描到一个数组插槽中。所以第一个数字将进入第1个插槽,第二个数字将进入第2个插槽etx。我该怎么做呢?使用下面的代码,所有数字都存储在插槽1中。我想输入所有数字,一次不输入1个数字。请有人能告诉我怎么做吗?

#include <stdio.h>

int main()
{
    int lotoNumbers[7];

    printf("Please enter todays winning ticket number:");
    scanf("%d%d%d%d%d%d%d", &lotoNumbers[1],
                            &lotoNumbers[2],
                            &lotoNumbers[3],
                            &lotoNumbers[4],
                            &lotoNumbers[5],
                            &lotoNumbers[6],
                            &lotoNumbers[7]);

    printf("Your loto ticket number is: %d%d%d%d%d%d%d",
                lotoNumbers[1],
                lotoNumbers[2],
                lotoNumbers[3],
                lotoNumbers[4],
                lotoNumbers[5],
                lotoNumbers[6],
                lotoNumbers[7]);

    return(0);
}

4 个答案:

答案 0 :(得分:2)

以下代码可让您一次性以空格分隔... 此外,您的代码从1开始计数到N,您必须从0到N - 1

#include <stdio.h>



int main()
{

    int lotoNumbers[7];


    printf("Please enter todays winning ticket number:");
    scanf("%d %d %d %d %d %d %d",&lotoNumbers[0],&lotoNumbers[1],&lotoNumbers[2],&lotoNumbers[3],&lotoNumbers[4],&lotoNumbers[5],&lotoNumbers[6]);
// scanf("%d.%d.%d.%d.%d.%d.%d",&lotoNumbers[0],&lotoNumbers[1],&lotoNumbers[2],&lotoNumbers[3],&lotoNumbers[4],&lotoNumbers[5],&lotoNumbers[6]);

    printf("Your loto ticket number is: %d %d %d %d %d %d %d", lotoNumbers[0], lotoNumbers[1], lotoNumbers[2], lotoNumbers[3], lotoNumbers[4], lotoNumbers[5], lotoNumbers[6]);

return(0);
}

查看注释的scanf ...如果输入由a分隔的数字,它将起作用。 :

    312.832.3278.3217.3123.7812.8

但是如果你将所有%d粘在一起,它怎么知道数字145只是一个数字还是1,4,5或14,5或1,45 ......

答案 1 :(得分:1)

使用"%1d"。这会将扫描宽度限制为1 char

int lotoNumbers[7];
if (scanf("%1d%1d%1d%1d%1d%1d%1d", &lotoNumbers[0], &lotoNumbers[1],
    &lotoNumbers[2], &lotoNumbers[3], &lotoNumbers[4], &lotoNumbers[5],
    &lotoNumbers[6]) == 7) {
  GoodToGo();
}

检查scanf()结果并开始索引为0。

答案 2 :(得分:0)

而不是scanf,使用getchar()函数获取单个char。 getchar()或getch()函数在输入后不需要按ENTER键。这是代码 -

int loto[7];

int i;
char c;

for(i=0;i<7;i++){

    c=getchar();

    int temp=c-'0';

    loto[i]=temp;    
}

答案 3 :(得分:0)

试试这个:

#include <stdio.h>
int main()
{
    int lotoNumbers[7];
    printf("Please enter todays winning ticket number:");
    scanf("%d%d%d%d%d%d%d",&lotoNumbers[0],&lotoNumbers[1],&lotoNumbers[2],&lotoNumbers[3],&lotoNumbers[4],&lotoNumbers[5],&lotoNumbers[6]);

    printf("Your loto ticket number is:\n");
    for(int i=0;i<7;i++)
    {
        printf("%d\n",lotoNumbers[i]);
    }
    return(0);
}