Wenn Du C++ hast, kannst Du doch mit dem Typ string arbeiten, dann kann man in etwa so machen:
strcmp geht zwar auch, ist ansonsten für C ohne +Code:string strname = "hoppala"; if (strname.substr(3,1) == "a") { // huch ein a ist da ! }
Hallo,
ich habe hier ein kleines Problem, ich bekomme über eine Netzwerkverbindung mit recv ein char Array (Länge 32) rein und nun will ich dieses char Array auf bestimmte Werte überprüfen, d.h. ich will gucken, ob da nur ein a oder so drinsteht, oder ob da ein Befehl drin ist.
ich habe da schon mal was mit strcmp probiert, aber das läuft nicht so wie ich will, eigentlich gar nicht.
Mit freundlichen Grüßen
Stoneman
Wenn Du C++ hast, kannst Du doch mit dem Typ string arbeiten, dann kann man in etwa so machen:
strcmp geht zwar auch, ist ansonsten für C ohne +Code:string strname = "hoppala"; if (strname.substr(3,1) == "a") { // huch ein a ist da ! }
jo das ist aber eignetlich nicht das was ich suche, ich brauche etwas was mirhier den vergleich erlaubt ob in echoBuffer nur ein q oder nur eine gesuchte Zeichenfolge drin steht (natürlich noch steuerzeichen), d.h.Code:while ((recvMsgSize = sock->recv(echoBuffer, RCVBUFSIZE)) > 0) { // Echo message back to client sock->send(echoBuffer, recvMsgSize); }das klappt mit strcomp nicht, wahrscheinlich aber auch deshalb, weil ich nicht weiß, was Telnet für steuerzeichen sendet.Code:echoBuffer = "q" -> erkennen echoBuffer = "quer" -> nichterkennen
Mfg
Stoneman
wenn du Befehle nach einem festgelegten Protokoll suchst, kannst du das Array in einer Schleife nach dem ersten möglichen Zeichen durchsuchen, und anschließend überprüfen, ob das nächste Zeichen zum Protokoll passt. Am besten, ist natürlich bei nicht festgelegten Längen, wenn du auch noch ein Endezeichen hast.
sast
雅思特史特芬
开发及研究
Na, eh' das Übliche:.. Telnet für steuerzeichen ..
Mach Folgendes:
recvMsgSize = sock->recv(echoBuffer, RCVBUFSIZE))
if (!recvMsgSize) break; // da is was kaputt
while (recvMsgSize)
{
recvMsgSize--;
if echoBuffer[recvMsgSize] > 0x20) // "TRim"->letztes Zeichen KEIN steuerzeichen
break;
}
echoBuffer[recvMsgSize] = 0x00; // ein "echter" ASCIZ string
if (strcmp(echoBuffer, "dudeldei") == 0) {}
if (strcmp(echoBuffer, "Q") == 0) {}
if (strcmp(echoBuffer, "Quack") == 0) {}
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
Ein fast HW-unabhängiges Beispiel, das soas macht findest du in Sprungtabelle
Im Endeffekt ist's das was PicNick schon geschrieben hat, nur mit einer Schleife drumrum.
Disclaimer: none. Sue me.
öhm .. schon mal mit
strchr
strstr
strtok
auseinandergesetzt ?
Alle (inkl. strcmp - würbe besser strncmp nehmen) sind case-sensitiv .. also ggf ein strupr machen ....
Ich kann mir keine Signatur leisten - bin selbständig!
Haben wir. Für ernsthaftes Parsen is das aber nix.Zitat von vajk
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
So ich habe das jetzt hinbekommen, und zwar habe ich zuerst \r und \n durch ein 0x20 ersetzt und dann den Code von PicNick verwendet, vielen Dank für eure Hilfe
Mfg
Stoneman
Das sehe ich anders. Nicht schlechter als ein strcmp !Zitat von PicNick
Ich kann mir keine Signatur leisten - bin selbständig!
Lesezeichen