2017-08-08 74 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)以前出現此代碼的位置。 –

相關問題