strdup() ir strndup() funkcijos C/C++
The strdup () ir strndup () funkcijos naudojamos eilutės kopijavimui.
strdup() :
Sintaksė: char *strdup(const char *s);
Ši funkcija grąžina žymeklį į nulinio pabaigos baitų eilutę, kuri yra eilutės, į kurią nukreipta s . Gauta atmintis atliekama dinamiškai naudojant malloc, todėl ją galima atlaisvinti naudojant free() .
Jis grąžina žymeklį į pasikartojančią eilutę s .
Žemiau yra C įgyvendinimas, rodantis strdup () funkcijos naudojimą C:
C
// C program to demonstrate strdup()> #include> #include> int> main()> {> > char> source[] => 'GeeksForGeeks'> ;> > // A copy of source is created dynamically> > // and pointer to copy is returned.> > char> * target = strdup(source);> > printf> (> '%s'> , target);> > return> 0;> }> |
Išvestis:
GeeksForGeeks
strndup() :
sintaksė: char *strndup(const char *s, size_t n);
Ši funkcija panaši į strdup(), bet daugiausia kopijuoja n baitų.
Pastaba : Jei s yra ilgesnis nei n, tada nukopijuojami tik n baitų, o pabaigoje pridedamas NULL (' ').
Žemiau yra C įgyvendinimas, rodantis funkcijos strndup () naudojimą C:
C
// C program to demonstrate strndup()> #include> #include> int> main()> {> > char> source[] => 'GeeksForGeeks'> ;> > // 5 bytes of source are copied to a new memory> > // allocated dynamically and pointer to copied> > // memory is returned.> > char> * target = strndup(source, 5);> > printf> (> '%s'> , target);> > return> 0;> }> |
Išvestis:
Geeks
Pažiūrėkime skirtumus lentelės pavidalu -:
| strdup () | strndup () | |
| 1. | Jis naudojamas norint grąžinti žymeklį į nulinę baitų eilutę, | Jis naudojamas norint grąžinti žymeklį į nulinę baitų eilutę |
| 2. | Jo sintaksė yra: char * strdup( const char * str1 ); | Jo sintaksė yra: char *strndup( const char *str, dydis_t dydis ); |
| 3. | Jis apibrėžtas antraštės failą | Jis apibrėžtas antraštės failą |
| 4. | Norint pasikartoti, reikia tik vieno parametro, nukreipiančio į nulinę baitų eilutę | Tam reikia dviejų parametrų, kurie yra: 2. maksimalus baitų skaičius, kurį reikia nukopijuoti iš str |
| 5. | Jo grąžinama reikšmė yra rodyklė į naujai paskirtą eilutę. | Jei įvyko klaida, jis grąžina nulinę rodyklę. |
Nuoroda: Linux vyras (7)