Par exemple, j'ai ceci
char *buff = "this is a test string";
et veulent obtenir "test"
. Comment puis je faire ça?
char subbuff[5];
memcpy( subbuff, &buff[10], 4 );
subbuff[4] = '\0';
Travail accompli :)
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.
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 strncpy
ici .
Vous pouvez utiliser strstr
. Exemple de code ici .
Notez que le résultat renvoyé n'est pas null terminé.
Vous pouvez simplement utiliser strstr()
à partir de <string.h>