Pobranie fragmentu znaku * [duplikat]

To pytanie ma już odpowiedź tutaj:

Na przykład, mam to

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

I chcesz dostać "test". Jak mogę to zrobić?

Author: J0e3gan, 2010-11-18

5 answers

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

Praca wykonana:)

 183
Author: Goz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-01-23 01:48:01

Zakładając, że znasz pozycję i długość podłańcucha:

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

Możesz osiągnąć to samo kopiując podciąg do innego miejsca docelowego pamięci, ale nie jest to rozsądne, ponieważ masz go już w pamięci.

Jest to dobry przykład unikania niepotrzebnego kopiowania za pomocą wskaźników.

 75
Author: Blagovest Buyukliev,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-11-18 11:48:21

Użyj char* strncpy(char* dest, char* src, int n) z <cstring>. W Twoim przypadku musisz użyć następującego kodu:

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

PEŁNA DOKUMENTACJA funkcji strncpy tutaj .

 57
Author: Mihai Scurtu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-11 07:14:02

Możesz użyć strstr. Przykładowy kod Tutaj

Zauważ, że zwracany wynik nie jest zakończony znakiem null.

 9
Author: Milan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-11-18 11:40:41

Możesz po prostu użyć strstr() z <string.h>

$ man strstr

 7
Author: Paul R,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-11-18 11:41:13