Teilstring aus String extrahieren

Hi

Ich bin gerade dabei meine eigene Bibliothek für das Empfangen von SMS eines GSM Moduls zu schreiben (Sim900) und habe bis vor kurzem eben eine fertige Bibliothek dafür benutzt.
Im Moment schicke ich ein Kommando AT+CMGR= zum Board und bekomme eine Antwort, sprcih einen langen String mit Nummer, Index und Zeit zurück.

Sende:

AT+CMGR=1

Antwort:

+CMGR: "REC UNREAD","+4968xxx","","2019/10/20 12:53:58+08"
Message

Hier möchte ich die Nummer und Message extrahieren, für die Nummer habe ich folgendes, finde jedoch das es etwas kompliziert erscheint. Bin gerne für effizientere Lösungswege offen und dankbar!

[...] 
char *beginchar, *beginphone, *endphone;
int cnt = 0;

beginchar = strstr(string, ","); //string enthält die Antwort des GSM Moduls
beginphone = beginchar + 2;
if(beginchar != 0)
{       
    endphone = strstr(beginphone, "\""); //beginphone ohne "*" = ganzer String ab "+" weg
          
    if(endphone != 0)
    {
       cnt = 0;
       while(beginphone < endphone)
       {
          phone[cnt++] = *(beginphone++); //mit "*" = das erste Zeichen 
       }
       phone[cnt] = '\0'; //Letzte Stelle terminieren für einen gültigen String
     }
}

In phone ist somit der gesamte String also die gesamte Telefonnummer abgespeichert. Erscheint mir etwas komplizierter, würde das mit beispielsweise strtok nicht einfacher funktionieren oder benötigt diese Funktion so viele Ressourcen?

Grüße

strtok mit “ als Trennzeichen, und das zweite jeweils verwerfen. Komma als Trennzeichen ist schlecht, weil das Kann im Text vorkommen. Wenn “ im Text vorkommt, hast du die A....karte.