我想用C直接输入一个二维数组,仅用单个空格和换行符分隔。同时,我还想验证用户是否输入了有效的一位整数(正数或负数)。我尝试了以下方法。
int A[3][3];
int i,j;
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
scanf("%d",&A[i][j]);
}
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
printf("%d ",A[i][j]);
printf("\n");
}
但是我想要两件事:-1.首先验证其输入是否为一位整数的输入。2.不仅适用于正整数和0,而且不适用于负整数。
例如如下输入将被接受并存储在二维数组中
1 2 -3 4-5 1 2 -61 1 2 3
所以首先,告诉用户输入值row-wise
或column-wise
。在这种情况下,请这样询问
printf("Enter integers row-wise");
现在,用户将输入值。
扫描这些值之后,请输入if
语句以验证值是否小于0大于0或等于0。如果值在continue;
范围内,则请输入exit(1);
语句并告知用户输入了值不正确。像这样:
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
scanf("%d",&A[i][j]);
if(A[i][j] <= 0 || A[i][j] > 0)
continue;
else
{
printf("Enter correct values.\n");
exit(1);
}
}
如果要验证数字是一个数字,只需检查数字是否在-9到9之间。
对于负数,我很确定%d
的scanf
修饰符可以捕获到它。
如果答案不正确,请在下面留言,我可以解决它:)
Edit:我忘了注意scanf
返回读取元素的数量。因此将其与1比较(因为您一次读取一个元素)将使您知道输入是否为部分输入。像这样的东西:
if (scanf(" %d", %A[i][j]) != 1){
//here goes the code for when the input is partial
}
应该做的把戏