Obtener una subcadena de un char *

Por ejemplo, tengo esto

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

y quiere obtener "test" . ¿Cómo puedo hacer eso?

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

Trabajo hecho 🙂

Suponiendo que conoce la posición y la longitud de la subcadena:

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

Puede lograr lo mismo copiando la subcadena a otro destino de la memoria, pero no es razonable ya que ya la tiene en la memoria.

Este es un buen ejemplo de evitar la copia innecesaria mediante el uso de punteros.

Use char* strncpy(char* dest, char* src, int n) desde . En su caso, necesitará usar el siguiente código:

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

La documentación completa sobre la función strncpy aquí .

Puedes usar strstr . Código de ejemplo aquí

Tenga en cuenta que el resultado devuelto no es nulo terminado.

Puedes usar strstr() desde

$ hombre strstr