Advertisement
ppupil2

check-input-int-float_phuong

May 1st, 2020
479
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.99 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <float.h>
  5.  
  6. /* Check input int number [min, max] with maximum range-digit */
  7. int intcheck(int min, int max, int range, char msg[], char err[]) {
  8.     int num, i, check, len;
  9.     char *x;
  10.    
  11.     x = (char *) malloc(range * sizeof(char));
  12.     while (1) {
  13.         printf("%s", msg);
  14.         fflush(stdin);
  15.         scanf("%[^\n]", x);
  16.         check = 1; len = strlen(x);
  17.         if (len > 0 && len <= range) {  // check validation string
  18.             for (i = 0; i < len; i++) {  // check validation int number
  19.                 if (x[i] < '0' || x[i] > '9') {
  20.                     check = 0;
  21.                     break;
  22.                 }
  23.             }
  24.             if (check == 1) {  // if it is a int number, convert string ~> int
  25.             num = atoi(x);
  26.             if (num >= min && num <= max)
  27.                 return(num);
  28.             }
  29.         }
  30.         printf("%s", err);
  31.     }
  32.     free(x);
  33. }
  34.  
  35. /* Check input float number in range (min, max] */
  36. double floatcheck(double min, double max, char msg[], char err[]) {
  37.     double num;
  38.     char *x;
  39.     int i, check;
  40.    
  41.     x = (char *) malloc(20 * sizeof(char));
  42.     while (1) {
  43.         printf("%s", msg);
  44.         fflush(stdin);
  45.         scanf("%[^\n]", x);
  46.         check = 1;
  47.         if (strlen(x) > 0 && strlen(x) < 20) {  // check validation string
  48.             for (i = 0; i < strlen(x); i++) {  // check validation double number
  49.                 if (x[i] < '0' || x[i] > '9') {
  50.                     if (x[i] != '.') {
  51.                         check = 0;
  52.                         break;
  53.                     }
  54.                 }
  55.             }
  56.             if (check == 1) {  // if it is a float number, convert string ~> double
  57.                 num = atof(x);
  58.                 if (num > min && num <= max)
  59.                     return(num);
  60.             }  
  61.         }
  62.         printf("%s", err);
  63.     }
  64.     free(x);
  65. }
  66.  
  67. int main(){
  68.     char msg[] = "Enter a int number in range [1,255]: ";
  69.     char err[] = "Invalid input, please re-enter.\n";
  70.     int n = intcheck(1, 255, 3, msg, err);
  71.     //int n = inputcheck(1, 255, 3, "Enter a number in range [1,255]: ", "Invalid input, please re-enter.\n");
  72.     printf("%d\n", n);
  73.    
  74.     strcpy (msg, "Enter a float number in range (0, ..] ");
  75.     double x = floatcheck(0, DBL_MAX, msg, err);
  76.     printf("%lf\n", x);
  77.     return 0;
  78. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement