## Danny_501 2

Hi all,
I need to convert a char array to an int. But the char array has regular characters in them('A', 'B', 'C'...) and numbers.

how would I omit those characters and extract the number, then store it as an int.

any help would be great
thanks.

## Ancient Dragon 5,243

Does that string represent hex numbers? such as "0A" ? If yes then you don't want to skip the alpha characters. Call strtol() to make the conversion. The last parameter to that function should be 16 (base 16 is hexidecimal).

## Danny_501 2

but no the string dosn't represent hex numbers.
the format of the string is two uppercase letters and 8 numbers. "XX000000" or "VD12345678".
I need get the last 8 digits and store it as an int.

## Danny_501 2

thanks again, but I've figured it out.
But im not sure if Im doing it the correct way.
Is it good practice to do it like this, or would there be a beter way?

``````char *charArray = "XX12345678";
int id = atoi(&charArray[2]);
printf("\n%d\n", id);``````

## acer5542

wht abt this...... more clear

``````int chartoint(char s[]) {
int i,no=0;

for(i=0;s[i]!=0;i++)               // for every char in the string
if(str[i]>='0' && str[i]<='9')  // if it is a digit
no=no*10+str[i]-48;          // add it to the end of the number
return no;
}
int main{
printf("%d", chartoint(charArray));
}``````

:)

## Danny_501 2

I like the idea of going through each char, more reusable than my solution.
thanks.

you could also use isdigit() to check if its a number.
http://cplusplus.com/reference/clibrary/cctype/isdigit/

also is that the correct way of looping to the end of an array in c?

``for(i=0;s[i]!=0;i++)``

sorry I mainly use java and c++.

## acer5542

I am not sure whether ths s da correct way...

acrdng to my knoledge i dd ths

may b there are some other ways........ thts doesnt mater

:)

## acer5542

or else u can do with strlen

``for(i=0;i<strlen(s);i++)``

## Ancient Dragon 5,243

or else u can do with strlen

``for(i=0;i<strlen(s);i++)``

You could, but you should never use strlen(s) in a loop like that unless the length of the string changes somewhere inside that loop. Why? Because the program has to call strlen() function on every loop iteration, whould could be very very time consuming, making your program slow.

Instead, either check for the string's null terminating character as previously posted, or set an int to the value returned by strlen() and use it in the loop.

``````int len = strlen(s);
for(i = 0; i < len; i++)``````