2016-10-02 8 views
0

ich dies mit:Suche in einer Zeichenfolge, die eine neue Zeile enthält?

if(strstr(inData, respond) != NULL) 

für die Zeichenfolge CMD innerhalb inData zu suchen.

Problem ist, dass, wenn neue Daten wie folgt aussehen:

Reboot 
CMD 

strstr wird es nicht finden, weil es die Suche stoppt, wo eine neue Linie ist. Gibt es einen eleganten Weg (nicht mit ausgefallenen Funktionen, da ich nicht kann), um darüber hinweg zu kommen?

+3

'strstr' kann newline (include) finden. Es gibt einen illegalen Charakter vor dem "CMD". (vielleicht ''0'') – BLUEPIXY

+0

Danke, wie sehe ich es nicht? Was ich hier zeige, ist der InData Print. – Curnelious

+0

hex dump 'inData'. – BLUEPIXY

Antwort

4

Wie bereits in den Kommentaren aus, strstr an Newline Grenzen nicht zu stoppen, sondern nur bei String-Terminator (\ 0)

Hier ist der relevante Abschnitt der Manpage:

BESCHREIBUNG Die Funktion strstr() findet das erste Vorkommen der Teilstringnadel im Heuhaufen. Die abschließende Null Bytes ('\ 0') werden nicht verglichen.

Also die Annahme ist, dass es null Bytes in einem von CMD oder inData gibt. Sie sollten die Zeichenfolge inData und CMD in this way oder hexdump it untersuchen (wie von @BLUEPIXY vorgeschlagen)

Verwandte Themen