Convert Array of chars to integer except the first position

Hello, i'm trying to convert a message received with VirtualWire library that starts with an 'R' to an integer, but at this time i couldn't find an explanation to this.
The message received is like "R016" and it is stored in a array like message[3] and i want to convert message to integer (like atoi function does) but except the letter 'R'.

Can you please give me some help?? THANKS in advance!!

Use atoi but pass it a pointer to the second element in the array instead of the first.

blastboot:
Hello, i'm trying to convert a message received with VirtualWire library that starts with an 'R' to an integer, but at this time i couldn't find an explanation to this.
The message received is like "R016" and it is stored in a array like message[3] and i want to convert message to integer (like atoi function does) but except the letter 'R'.

Can you please give me some help?? THANKS in advance!!

How can four letters and a null terminating character be stored in a 3 byte array?

Exactly what they both said.

I'll second that motion :wink:

It should be message[5], for 4 characters plus terminating null.

And you would use

int value = atoi(message+1);

Or, more explicitly:

int value = atoi(&message[1]);

Thanks for the reply! I've corrected the size of array to 4 (message[4]) to store the Rxxx value (forget the \r).
So i basically need to use atoi function and point the beggining of convertion to position [1], is that what int value = atoi (message + 1) do, is that right??

blastboot:
Thanks for the reply! I've corrected the size of array to 4 (message[4]) to store the Rxxx value (forget the \r).
So i basically need to use atoi function and point the beggining of convertion to position [1], is that what int value = atoi (message + 1) do, is that right??

There is no \r

\r is "carriage return". \0 is the end of string marker.

So you have Rxxx\0 - count them... R x x x \0 - I make that 5. Not 4, nor 3. 5.

The variable "message" points to the start of the memory set aside as 5 bytes, so message+1 points to the start plus 1. It is functionally the same as using the & operator (address of) on the second element (message[1]) of the array (&message[1] is "the address of the second element (number 1 counting from 0 - 0, 1, 2, 3, 4) in the array").

message[0] = R
message[1] = x
message[2] = x
message[3] = x
message[4] = \O

5 bytes: message[5] is the correct form, confirm

int value = atoi(&message[1]) or int value = atoi(message + 1) -----> is the same?

[code]int value = atoi(&message[1]) or int value = atoi(message + 1) -----> is the same?[/code]

Yes, they're equivalent.

Also, surprisingly is int value = atoi(&1[message])

Thank you all very much! You're really helpfull.