检查输入是数字,还是小数点,或正/负

时间:2016-03-29 17:39:08

标签: c matrix

因此我们被要求创建一个程序,使用户能够从1-6中选择关于矩阵运算的选项。在每个用户的输入中,我们需要检查此输入是否有资格进行操作(程序应接受INTEGERS或FLOATING POINT,正面或负面)。如果不满足上述条件,我们将再次要求用户输入另一个值,直到用户正确输入正确的输入。

这是我的程序片段:

printf("[A] You chose Matrix Addition\n");
printf("How many columns would you like?\n");
fgets(rows,sizeof(rows),stdin);
r=atoi(rows);
printf("How many rows would you like?\n");
fgets(columns,sizeof(columns),stdin);
c=atoi(columns);
printf("Enter the elements of first matrix\n");

   for (e = 0; e < c; e++) {
      for (f = 0; f < r; f++) {
         printf("Element [%d][%d]:\n",e,f);
         fgets(elem1,sizeof(elem1),stdin);
         a=atof(elem1);
         first[e][f]=a;
      }
   }

 printf("Enter the elements of second matrix\n");

   for (e = 0; e < c; e++) { 
      for (f = 0; f < r; f++) {
         printf("Element [%d][%d]:\n",e,f);
         fgets(elem2,sizeof(elem2),stdin);
         b=atof(elem2);
         second[e][f]=b;
      }
   }


printf("Sum of entered matrices:-\n");
   for (e = 0; e < c; e++) {
      for (f = 0 ; f < r; f++) {
           sum[e][f] = first[e][f] + second[e][f];
           printf("%.3f\t", sum[e][f]);
      }
      printf("\n");
   }

我的问题是,我该怎么做才能(1)检查输入是否符合条件,以及(2)如何让用户再次输入另一个。

*我们不允许使用scanf和其他&#34;不安全的&#34;字符串函数,如puts,gets,strlen等。 *上述程序仅适用于整数,并不能判断用户的输入是否无效。我怎么做?感谢。

1 个答案:

答案 0 :(得分:0)

你可以这样做:

// I am providing just hint..
do {
    printf("Enter Element [%d][%d]:\n",e,f);
    fgets(elem1,sizeof(elem1),stdin);
    a=atof(elem1);
}while(!notDesiredValue(a));

现在自己实施notDesiredValue(flaot number)以符合您所希望的条件......是否有帮助......