This simple program will demonstrates how to get first encountered integer number in the string str[].
Function get_first_encountered_number(char *str, int *number);
can be reused to hunt for more numbers. Negative integer numbers are also recognized.
#include <stdio.h>
#include <string.h>
int my_atoi(char *str)
{
int result = 0;
for (int i = 0; str[i] != '\0'; ++i)
result = result*10 + str[i] - '0';
return result;
}
char * get_first_encountered_number(char *str, int *number)
{
int i;
for (i=0; str[i]!=0; i++)
{
if ( (str[i] < '0') || (str[i] > '9'))
continue;
if( (i>0) && (str[i-1] == '-'))
*number = -my_atoi(&str[i]);
else
*number = my_atoi(&str[i]);
break;
}
return &str[i];
}
int main()
{
char str[] = "bla bla bla 98";
char str1[] = "bla bla bla -98";
int a;
get_first_encountered_number(str,&a);
printf("number= %d\n",a);
get_first_encountered_number(str1,&a);
printf("number= %d\n",a);
return 0;
}
OUTPUT:
number= 98
number= -98