C:以数组形式请求输入
我想让用户的输入形成一个整数数组。如果一个输入无效(不是整数),则将打印当前数组,并要求用户继续输入最后一个位置的数字。这是我的代码,但它不起作用。我该怎么办C:以数组形式请求输入,c,C,我想让用户的输入形成一个整数数组。如果一个输入无效(不是整数),则将打印当前数组,并要求用户继续输入最后一个位置的数字。这是我的代码,但它不起作用。我该怎么办 int A[SIZE], i; for (i=0; i<SIZE; i++) { A[i] = 0; } printf("Enter %d numbers as an array: ", SIZE); i = 0; // Initialize i whi
int A[SIZE], i;
for (i=0; i<SIZE; i++) {
A[i] = 0;
}
printf("Enter %d numbers as an array: ", SIZE);
i = 0; // Initialize i
while (i<SIZE) {
for (i=i; i<SIZE; i++) {
if (!scanf("%d", &A[i])) {
printf("Invalid input!\n");
printarray(A, SIZE);
printf("i = %d", i);
break;
}
}
}
inta[SIZE],i;
对于(i=0;i如果用户输入的不是整数,scanf
将继续失败,因为输入仍然存在。解决此问题的一种方法是使用fgets
逐行读取数据,然后使用sscanf
扫描该行以查找数字。如果输入有效,还应仅增加i
结合其他评论,您可以得到如下内容:
int i=0;
while(i<SIZE)
{
char line[100];
fgets(line, sizeof line, stdin);
if(sscanf(line, "%d", &A[i]) == 1)
++i;
else
{
printf("Invalid input!\n");
printArray(A, i);
printf("i = %d", i);
}
}
inti=0;
while(i“它不工作”)while(iprintary(A,i);
因为数组尚未满。使用while(scanf(…)!=1){
循环,直到从用户收到正确的输入。一旦scanf
失败,它将继续失败,直到清除输入缓冲区。还要注意,if
语句没有处理EOF,EOF是一个非零值。