integer extraction from string

前端 未结 5 960
天命终不由人
天命终不由人 2021-01-26 18:37

I have an input argument string const char* s I know that it starts the sequence of chars which are integers representation ,this sequence could be of any length ,

相关标签:
5条回答
  • 2021-01-26 18:50

    atoi() should do what you want to, although a more robust implementation would use strtol().

    0 讨论(0)
  • 2021-01-26 18:58

    atoi() should work fine for this. It should stop at the first non-numeric character.

    int x = atoi("23meeting")
    

    EDIT: A comment implies that atoi() is not thread safe or is deprecated from the language. There is some discussion of the thread safety of this function here:

    Why does OSX document atoi/atof as not being threadsafe?

    Can someone provide a reference to atoi not being thread safe?

    And as far as I can tell atoi() is in C99 which is the latest standard (7.20.1.2).

    0 讨论(0)
  • 2021-01-26 19:00

    You can iterate through the string and can give the condition to get numbers

    num=0;
    for(i=0;str[i]!='\0';i++) {
    if(str[i]>=48 && str[i]<=57)
     num=num*10+(str[i]-48);
      printf("\n%d",num);
    } 
    
    0 讨论(0)
  • 2021-01-26 19:01

    One way would be to use sscanf:

    char *str = "23meeting";
    unsigned x;
    sscanf(str, "%u", &x);
    printf("%u\n", x);
    

    For additional error-checking, though, you'll have to do some additional manual checks.

    0 讨论(0)
  • 2021-01-26 19:07

    Try atoi() or the complete strtol():

    int x = atoi("23meeting");
    int x = (int)strtol("23meeting", (char **)NULL, 10);
    

    Check the man pages on your system (section 3 in Unix).

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