2017-08-08 52 views
-3

我想用合适的if子句写下面的代码。
请问你能帮我吗?如何检查输入不是int或浮点在C中?

int main() 
    { 
     float a,b; 
     printf("Enter Two number with space:\n"); 
     scanf("%f %f",&a,&b); 
     //if(%a || b are char%) 
      printf("Not correct format!") 
     else 
      printf("a and b: %.2f %.2f",a,b); 

     return 0; 
    } 
+0

这是不是在其他的问题,如容易 –

+3

,看到一个从昨天:?有没有一种方法来检查,如果字符串可以在C浮点数(https://stackoverflow.com/questions/45554639 /)如果你想检查一个字符串,那么'sscanf()'或'strtod()'是合适的。几乎可以肯定其他人是相关的。 –

+0

请先阅读问题!投票后或回答。在堆栈溢出中没有与此相同的问题 –

回答

0
#define INT_CONVERTED  (1 << 0) 
    #define FLOAT_CONVERTED  (1 << 1) 
    int ReadNumber(const char *str, double *db, int *in) 
    { 

     int result = (str == NULL || db == NULL || in == NULL) * -1; 
     int len = 0; 
     char *tmp; 

     if (result != -1) 
     { 
      tmp = (char *)malloc(strlen(str) + 1); 
      strcpy(tmp, str); 
      for (int i = strlen(str) - 1; i >= 0; i--) 
      { 
       if (isspace(tmp[i])) 
       { 
        tmp[i] = 0; 
        continue; 
       } 
       break; 
      } 
      if (strlen(tmp)) 
      { 
       if (sscanf(tmp, "%lf%n", db, &len) == 1 && strlen(tmp) == len) 
       { 
        result |= FLOAT_CONVERTED; 
       } 
       if (sscanf(tmp, "%d%n", in, &len) == 1 && strlen(tmp) == len) 
       { 
        result |= INT_CONVERTED; 
       } 
      } 
      free(tmp); 
     } 
     return result; 
    } 
+4

另请参见[有没有方法检查字符串是否可以是浮点数C?](https://stackoverflow.com/a/45555411/15168)以前出现此代码的位置。 –

相关问题