eingelesenen Sring richtig identifizieren

Scherheinz:
Wenn was gefunden wird, steht der Zeiger dann auf dem Anfang des Strings oder auf dem Anfang der "Telefonnummer" die ja eh mit einer "0" beginnt.?

Der Zeiger zeigt auf den Anfang des gesuchten Strings in dem Arrays das du durchsuchst. z.B.:

char str[] = "123456789";
char* ptr = strstr(str, "45");

ptr zeigt danach auf die '4' in str. Wenn du Serial.println(ptr) machst kommt "456789" raus.

Das würde dann bedeuten das ich die "0" am Anfang der Nummer nicht mitsuchen dürfte.

Nein. NULL != '0'

NULL ist wirklich 0 in ASCII. '0' ist 48:

Außerdem ist das ein Zeiger. Das ist eine 16 Bit Variable die die Adresse einer Speicherzelle enthält. Mit dem Inhalt des Speichers hat das erst mal nichts zu tun. Die bekommst einen Zeiger zurück der 0 ist. Nicht einen Zeiger auf eine Speicherzelle in der 0 steht.

In dem Beispiel oben ist ptr die Adresse und *ptr ist der Inhalt. Das hier würde die '4' überschreiben:

char str[] = "123456789";
char* ptr = strchr(str, '4');     //Zeiger auf '4', d.h. die Adresse der Speicherzelle in der die '4' steht
*ptr = '1';       //'4' mit '1' ersetzen

ptr = '4' würde die Adresse selbst auf '4', d.h. auf 52, setzten. Das wäre ein schlimmer Fehler

Oder wenn man den Rest des String abschneiden möchte:

char str[] = "123456789";
char* ptr = strstr(str, "45");
*(ptr + strlen("45")) = 0;      //Inhalt der Adresse die von ptr + Stringlänge adressiert wird auf 0 setzen

Strings sind NULL-terminiert. Das heißt die Bearbeitung wird beendet wenn NULL/0/'\0' auftritt. Man könnte also den Anfang von "45" suchen und dann die Länge von "45" (2) auf den Zeiger addieren. Der Zeiger zeigt dann auf die '6'. Diese Adresse dereferenziert man (mit dem Stern) und schreibt 0 rein (nicht '0'!).
Wenn man dann str ausgibt kommt "12345" heraus.