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 ,
atoi() should do what you want to, although a more robust implementation would use strtol().
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).
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);
}
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.
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).