我试图将每个单独的数字扫描到一个数组插槽中。所以第一个数字将进入第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);
}
答案 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);
}