What is the easiest way to get an int in a console app?

前端 未结 5 1211
暖寄归人
暖寄归人 2021-01-04 08:00

I want to process user input as an integer, but it seems as though C has no way to get an int from stdin. Is there a function to do this? How would I go about getting an int

相关标签:
5条回答
  • 2021-01-04 08:44

    scanf() is the answer, but you should certainly check the return value since many, many things can go wrong parsing numbers from external input...

    int num, nitems;
    
    nitems = scanf("%d", &num);
    if (nitems == EOF) {
        /* Handle EOF/Failure */
    } else if (nitems == 0) {
        /* Handle no match */
    } else {
        printf("Got %d\n", num);
    }
    
    0 讨论(0)
  • 2021-01-04 08:49

    Aside from (f)scanf, which has been sufficiently discussed by the other answers, there is also atoi and strtol, for cases when you already have read input into a string but want to convert it into an int or long.

    char *line;
    scanf("%s", line);
    
    int i = atoi(line);  /* Array of chars TO Integer */
    
    long l = strtol(line, NULL, 10);  /* STRing (base 10) TO Long */
                                      /* base can be between 2 and 36 inclusive */
    

    strtol is recommended because it allows you to determine whether a number was successfully read or not (as opposed to atoi, which has no way to report any error, and will simply return 0 if it given garbage).

    char *strs[] = {"not a number", "10 and stuff", "42"};
    int i;
    for (i = 0; i < sizeof(strs) / sizeof(*strs); i++) {
        char *end;
        long l = strtol(strs[i], &end, 10);
        if (end == line)
            printf("wasn't a number\n");
        else if (end[0] != '\0')
            printf("trailing characters after number %l: %s\n", l, end);
        else
            printf("happy, exact parse of %l\n", l);
    }
    
    0 讨论(0)
  • 2021-01-04 08:55

    The standard library function scanf is used for formatted input: %d int (the d is short for decimal)

    #include <stdio.h>
    int main(void)
    {
      int number;
      printf("Enter a number from 1 to 1000: ");
    
      scanf("%d",&number); 
      printf("Your number is %d\n",number);
      return 0;
    } 
    
    0 讨论(0)
  • 2021-01-04 08:55
    #include <stdio.h>
    
    main() {
    
        int i = 0;
        int k,j=10;
    
        i=scanf("%d%d%d",&j,&k,&i);
        printf("total values inputted %d\n",i);
        printf("The input values %d %d\n",j,k);
    
    }
    

    from here

    0 讨论(0)
  • 2021-01-04 08:58
    #include <stdio.h>
    
    int n;
    scanf ("%d",&n);
    

    See http://www.cplusplus.com/reference/clibrary/cstdio/scanf/

    0 讨论(0)
提交回复
热议问题