Ottieni una sottostringa di un carattere *

Ad esempio, ho questo

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

e voglio ottenere "test" . Come lo posso fare?

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

Lavoro fatto 🙂

Supponendo che tu conosca la posizione e la lunghezza della sottostringa:

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

È ansible ottenere la stessa cosa copiando la sottostringa in un’altra destinazione di memoria, ma non è ragionevole poiché la si possiede già in memoria.

Questo è un buon esempio di evitare la copia non necessaria usando i puntatori.

Usa char* strncpy(char* dest, char* src, int n) da . Nel tuo caso dovrai usare il seguente codice:

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

Documentazione completa sulla funzione strncpy qui .

Puoi usare strstr . Codice di esempio qui

Si noti che il risultato restituito non è terminato con null.

Puoi semplicemente usare strstr() da

$ man strstr