Jak uzyskać podłoże char*

Jak uzyskać podłoże char*

Zdobycie podłoże char* jest prostym tematem, który można łatwo osiągnąć. Można to wykorzystać do szerokiej gamy zadań programowania, takich jak hakowanie, pełzanie internetowe i manipulacja strunami. W tym artykule omówię podstawową koncepcję i nakreślę niezbędne kroki w celu uzyskania podłoże z char*.

Jednak przed przejściem do głównego procesu, najpierw zrozummy koncepcję podłoże.

Co to jest podłoże

Wyłożenie to tylko mniejszy ciąg głównego tekstu. Ta mniejsza „część”, która jest uzyskiwana, musi nadal zawierać oryginalny znak lub znaki z oryginalnego ciągu. Na przykład, jeśli oryginalny ciąg był "Witaj świecie", a później podłoże byłoby "Witam" Lub "świat" w zależności od pożądanego wyjścia.

Zdobądź podłoże char

Użytkownicy C mogą otrzymać podłoże Char poprzez następujące funkcje:

  • funkcja strncpy ()
  • funkcja sbstr ()
  • funkcja memcpy ()

1: funkcja strncpy ()

Pierwszy sposób na zdobycie podłoże char* jest używanie strncpy () C Funkcja biblioteki. Kopiuje określoną liczbę znaków z jednego ciągu do drugiego. Aby przenieść podłoże z char* na świeżo skonstruowany bufor, użyj tej funkcji. Oto przykład używania strncpy ():

Tutaj POS oznacza początek indeks I Len to pożądana długość podłańca.

#włączać
#włączać
int main ()

int pos, Len;
char str [14] = "abcdefghijklm";
Char Substring [14];
POS = 6;
len = 5;
printf („oryginalny ciąg to: %s”, str);
printf („\ nSubString to:”);
strncpy (podaj, str+(POS-1), len);
printf (podłoże);
powrót 0;

W tym przykładzie, podłoże to bufor docelowy, char str to ciąg źródłowy i poz jest 6, co oznacza, że ​​krojenie ciągów rozpocznie się od 6. pozycji (F) i kończy się na piątej wartości J w tej sprawie. Spowoduje to podłoże bufor pierwszych 50 znaków z oryginalnego char* skopiowanego z.

Wyjście

2: funkcja substr ()

Drugi sposób na zdobycie podłoże char* jest używanie substr () C Funkcja biblioteki. Służy do wyodrębnienia sekcji łańcucha na podstawie indeksu początkowego i liczby znaków. Ta funkcja może być użyta do zwrócenia wskaźnika do podłacia lub do modyfikacji istniejącego ciągu. Przykład substr () Wykorzystanie to następujące:

#włączać
#włączać
char * substr (const char * src, int m, int n)

int len ​​= n-m;
char*dest = (char*) malloc (sizeof (char)*(len + 1));
dla (int i = m; i
*dest = *(src+i);
dest ++;

*dest = '\ 0';
powrót Dest-len;

int main ()

char src [] = "wyodrębnimy podaj z ciągu";
int m = 6;
int n = 15;
char* dest = substr (src, m, n);
printf („%s”, dest);
powrót 0;

W tym kodzie długość i lokalizacja podjazd Slice są określane w metodzie zdefiniowanej przez użytkownika substr (), a plasterek jest następnie umieszczony w Dest zmienne i wydrukowane w głównej funkcji. Powyższy kod wyprowadzi podłoże między 6. pozycją (L) I 15 od samego początku, czyli T z "wyciąg" strunowy. M jest punktem wyjścia i N jest punktem końcowym w tym przypadku. Wyjście:

3: Funkcja memcpy ()

Trzeci sposób na zdobycie podłoże char* jest używanie memcpy () C Funkcja biblioteki. Kopiuje kilka bajtów z jednej lokalizacji pamięci do drugiej. Aby przenieść podłoże z char* na świeżo skonstruowany bufor, użyj tej funkcji. Przykład memcpy () Wykorzystanie to następujące:

#włączać
#włączać
int Main (void)

char *text = "To jest pełny ciąg";
Char Subtext [7];
memcpy (subtext i text [9], 6);
subtext [6] = '\ 0';
printf („oryginalny ciąg: %s \ n”, tekst);
printf („Substring: %s”, subtext);
powrót 0;

W tym kodzie tekst Przechowywany ciąg zmiennej jest najpierw wyświetlany, a następnie memcpy () Metoda jest stosowana do wyodrębnienia podłoża, która ma długość z 6, pozycja z 9 i oryginał tekst strunowy. podłoże jest następnie drukowane po zapisaniu w podtekst zmienny.

Wyjście

Wniosek

Istnieją trzy podstawowe funkcje, aby uzyskać podłoże Char w języku programowania C. Funkcje są strncpy (), substr () I memcpy (). Kopiując określoną ilość znaków z jednego ciągu do drugiego, możesz użyć strncpy () funkcjonować. Aby wyodrębnić część sznurka, możesz iść z funkcja substr (). Podczas gdy możesz użyć memcpy () Funkcja, która przenosi wiele bajtów z jednego adresu pamięci do drugiego, a zatem może być skuteczna, aby uzyskać ciąg charakte.