2012-12-02 10 views
8

Ich muss herausfinden, ob ein Char-Array mit "ADD" beginnt. Ich weiß, wie man strcmp() benutzt, aber ich weiß nicht, wie man die ersten drei Zeichen bekommt. Ich hasse es wirklich mit C-Strings zu arbeiten. Wie kann ich ein Stück eines Char-Arrays wie char buffer[1024]?Wie kann ich eine Zeichenfolge in C schneiden?

Antwort

9

Verwenden Sie strncmp("ADD", buffer, 3).

Ich bin mir nicht sicher, was Sie mit "Scheibe" meinen, aber jeder Zeiger innerhalb buffer könnte als eine Scheibe betrachtet werden. Wenn beispielsweise buffer eine Zeichenfolge ist, die mit "ADD" beginnt, dann wird char *slice = buffer + 3 dieselbe Zeichenfolge mit "ADD" entfernt. Hinweis, dass slice ist dann ein Teil von buffer und Änderung des Inhalts der slice wird den Inhalt der buffer ändern. Und umgekehrt.

Wenn Sie mit "Slice" eine unabhängige Kopie meinen, müssen Sie einen neuen Speicherblock zuweisen und die interessanten Teile von buffer in Ihren Speicher kopieren. Hierfür stehen die Bibliotheksfunktionen strdup und strndup zur Verfügung.

+0

Wie man ein Offset und ein Ende geben könnte, die kürzer als die ursprüngliche char-Sequenz ist? Wie "Hallo" + 1 Größe 3 (so "Elle"); Das ist mit Slice gemeint, glaube ich. Glücklicherweise bieten strncmp und printf Optionen an, um damit zu arbeiten, aber es wäre nett, dies als eine Zeichenfolge zu zeigen. – scape

+0

@scape Siehe [Wie extrahiere ich einen Teilstring aus einer Zeichenkette in C?] (Https://stackoverflow.com/questions/1955434) – kmkaplan

+0

"strtok ersetzt normalerweise Trennzeichen durch '\ 0', da es die Eingabe" isst "." was offensichtlich einige Nachteile hat. – scape

8

Verwendung strncmp .Assuming Puffer ist die Variable zu testen, nur

strncmp (buffer,"ADD",3); 
Verwandte Themen