175 Stimmen

Holen Sie sich ein Teilzeichenfolge von einem char*

Zum Beispiel habe ich das hier

char *buff = "this is a test string";

und möchte "test" erhalten. Wie kann ich das tun?

255voto

Goz Punkte 59671
char subbuff[5];
memcpy( subbuff, &buff[10], 4 );
subbuff[4] = '\0';

Job done :)

103voto

Blagovest Buyukliev Punkte 40952

Angenommen, Sie kennen die Position und die Länge des Teilstrings:

char *buff = "this is a test string";
printf("%.*s", 4, buff + 10);

Sie könnten dasselbe erreichen, indem Sie den Teilstring in ein anderes Speicherziel kopieren, aber es ist nicht vernünftig, da Sie ihn bereits im Speicher haben.

Dies ist ein gutes Beispiel für das Vermeiden unnötigen Kopierens durch Verwendung von Zeigern.

69voto

Mihai Scurtu Punkte 1418

Verwenden Sie char* strncpy(char* dest, char* src, int n) aus . In Ihrem Fall müssen Sie den folgenden Code verwenden:

char* substr = malloc(4);
strncpy(substr, buff+10, 4);

Vollständige Dokumentation zur Funktion strncpy hier.

6voto

Milan Punkte 14573

Sie können strstr verwenden. Beispielcode hier.

Beachten Sie, dass das zurückgegebene Ergebnis nicht mit null terminiert ist.

6voto

Paul R Punkte 201623

Sie können einfach strstr() aus verwenden

$ man strstr

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X