web-dev-qa-db-fra.com

Obtenir une sous-chaîne d'un caractère *

Par exemple, j'ai ceci

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

et veulent obtenir "test". Comment puis je faire ça?

133
user502230
char subbuff[5];
memcpy( subbuff, &buff[10], 4 );
subbuff[4] = '\0';

Travail accompli :)

200
Goz

En supposant que vous connaissiez la position et la longueur de la sous-chaîne:

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

Vous pouvez obtenir le même résultat en copiant la sous-chaîne dans une autre destination de la mémoire, mais ce n’est pas raisonnable car vous l’avez déjà en mémoire.

C'est un bon exemple pour éviter les copies inutiles à l'aide de pointeurs.

80

Utilisez char* strncpy(char* dest, char* src, int n) à partir de <cstring>. Dans votre cas, vous devrez utiliser le code suivant:

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

Documentation complète sur la fonction strncpyici .

61
Mihai Scurtu

Vous pouvez utiliser strstr. Exemple de code ici .

Notez que le résultat renvoyé n'est pas null terminé.

8
Milan

Vous pouvez simplement utiliser strstr() à partir de <string.h>

$ man strstr

7
Paul R