strcpy v C

ÚVOD:

strcpy je funkce standardní knihovny C, která kopíruje řetězec z jednoho umístění do druhého. Je definován v hlavičkovém souboru string.h.

Funkce má dva argumenty: cílovou vyrovnávací paměť, kam bude uložen zkopírovaný řetězec, a zdrojový řetězec, který bude zkopírován. Funkce zkopíruje celý zdrojový řetězec, včetně ukončovacího znaku null, do cílové vyrovnávací paměti.

The C strcpy() funkce kopie obsah řetězce na jiný. Obsah cílového řetězce bude nahrazeno se zdrojovým řetězcem pomocí funkce strcpy(). Je definován uvnitř hlavičkový soubor.

Syntax:

char* strcpy(char* destination, const char* source); 

Parametry: Tato metoda přijímá následující parametry:

    destination : Ukazatel na cílové pole znaků, kam má být obsah zkopírován. source: Ukazatel na zdrojové pole znaků, které se má zkopírovat.

Návratová hodnota: A ukazatel na cíl string je vrácen poté, co funkce strcpy() zkopíruje zdrojový řetězec.

Příklad: 1

C




// C program to illustrate> // strcpy() function in C> #include> #include> int> main()> {> > char> str1[] => 'Hello World!'> ;> > char> str2[] => 'GfG'> ;> > char> str3[40];> > char> str4[40];> > char> str5[] => 'GeeksForGeeks'> ;> > strcpy> (str2, str1);> > strcpy> (str3,> 'Copy successful'> );> > strcpy> (str4, str5);> > printf> (> 'str1: %s str2: %s str3: %s str4:%s '> , str1,> > str2, str3, str4);> > return> 0;> }>

Výstup

str1: Hello World! str2: Hello World! str3: Copy successful str4:GeeksForGeeks 

PŘÍKLAD 2:

C




#include> #include> int> main()> {> > char> str1[20] => 'Hello'> ;> > char> str2[20];> > strcpy> (str2, str1);> > printf> (> 'str1: %s '> , str1);> > printf> (> 'str2: %s '> , str2);> > return> 0;> }>

Výstup

str1: Hello str2: Hello 

Důležité body

  • Pomocí této funkce můžete zkopírovat celý řetězec do cílového řetězce. Zdrojové řetězce nejsou připojeny k cílovým řetězcům. V důsledku toho je obsah cílového řetězce nahrazen obsahem zdrojového řetězce.
  • Zdrojové řetězce nejsou ovlivněny. Po zkopírování zůstane zdrojový řetězec stejný.
  • Chcete-li použít strcpy(), použijte řetězec.h musí být zahrnut hlavičkový soubor.
  • V případě delšího zdrojového řetězce (Character Array) provádí strcpy() nedefinované chování.

VÝHODY A NEVÝHODY:

Některé výhody použití strcpy v C zahrnují:

Je to jednoduchá a snadno použitelná funkce, kterou lze rychle a snadno zkopírovat.
Je to standardní knihovní funkce, takže je široce dostupná a přenosná napříč různými platformami a kompilátory.
Je relativně rychlý, protože ke zkopírování vyžaduje pouze jeden průchod zdrojovým řetězcem.

Při použití strcpy je však třeba zvážit také některé nevýhody:

Nekontroluje velikost cílové vyrovnávací paměti, takže je možné vyrovnávací paměť přepsat a způsobit přetečení vyrovnávací paměti, pokud je zdrojový řetězec delší než cílová vyrovnávací paměť. To může vést k bezpečnostním chybám a dalším problémům.
Nezpracovává správně překrývající se řetězce. Pokud se zdrojový a cílový řetězec překrývají, chování strcpy není definováno.
Nezpracovává správně prázdné znaky ve zdrojovém řetězci. Pokud zdrojový řetězec obsahuje znak null, strcpy zastaví kopírování v tomto bodě, i když jsou ve zdrojovém řetězci další znaky.