Parsing Integers from Serial Input

BackBraceBoy:
Can someone please help?

using a delimiter is key...

example message to input to serial monitor (using NewLine when you enter the string):

32;45;-63;89
const size_t MAX_MESSAGE_LENGTH = 32;

int var[4];

void setup() 
{
  Serial.begin(9600);
  Serial.println("let's go!");
}

void loop() 
{
  if(const char* newMessage = checkForNewMessage(Serial, '\n'))
  {
    Serial.println(newMessage);
    if (strlen(newMessage) == 0)
      Serial.println("*");
    char mssg[strlen(newMessage+1)];
    strcpy(mssg, newMessage);
    var[0] = atoi(strtok(mssg, ";"));
    var[1] = atoi(strtok(NULL, ";"));
    var[2] = atoi(strtok(NULL, ";"));
    var[3] = atoi(strtok(NULL, ";"));
    for (int i = 0; i < 4; i++)
    {
      Serial.println(var[i]);
    } 
  }
}

const char* checkForNewMessage(Stream& stream, const char endMarker)
{
  static char incomingMessage[MAX_MESSAGE_LENGTH] = "";
  static byte idx = 0;
  if(stream.available())
  {
    incomingMessage[idx] = stream.read();
    if(incomingMessage[idx] == endMarker)
    {
      incomingMessage[idx] = '\0';
      idx = 0;
      return incomingMessage;
    }
    else
    {
      idx++;
      if(idx > MAX_MESSAGE_LENGTH - 1)
      {
        //stream.print(F("{\"error\":\"message too long\"}\n"));  //you can send an error to sender here
        idx = 0;
        incomingMessage[idx] = '\0';
      }
    }
  }
  return NULL;
}