Provided by: manpages-ro-dev_4.27.0-1_all bug

NUME

       stpncpy,  strncpy  -  umple  o  memorie tampon de mărime fixă cu octeți nenuli dintr-un șir de caractere,
       umplând cu octeți nenuli după cum este necesar

BIBLIOTECA

       Biblioteca C standard (libc, -lc)

SINOPSIS

       #include <string.h>

       char *strncpy(char dst[restrict .dsize], const char *restrict src,
                     size_t dsize);
       char *stpncpy(char dst[restrict .dsize], const char *restrict src,
                     size_t dsize);

   Cerințe pentru macrocomenzi de testare a caracteristicilor pentru glibc (consultați feature_test_macros(7)):

       stpncpy():
           Începând cu glibc 2.10
               _POSIX_C_SOURCE >= 200809L
           Înainte de glibc 2.10:
               _GNU_SOURCE

DESCRIERE

       Aceste funcții copiază octeți nenuli din șirul indicat de src în matricea indicată de dst.  În  cazul  în
       care  sursa are prea puțini octeți nenuli pentru a umple destinația, funcțiile umplu destinația cu octeți
       nenuli la sfârșit. În cazul în care memoria tampon de destinație, limitată de  dimensiunea  sa,  nu  este
       suficient de mare pentru a conține copia, secvența de caractere rezultată este trunchiată. Pentru a vedea
       diferența dintre cele două funcții, consultați secțiunea VALOAREA RETURNATĂ.

       O implementare a acestor funcții ar putea fi:

           char *
           strncpy(char *restrict dst, const char *restrict src, size_t dsize)
           {
               stpncpy(dst, src, dsize);
               return dst;
           }

           char *
           stpncpy(char *restrict dst, const char *restrict src, size_t dsize)
           {
               size_t  dlen;

               dlen = strnlen(src, dsize);
               return memset(mempcpy(dst, src, dlen), 0, dsize - dlen);
           }

VALOAREA RETURNATĂ

       strncpy()
              returnează dst.

       stpncpy()
              returnează un indicator la un octet după ultimul caracter din secvența de caractere de destinație.

ATRIBUTE

       Pentru o explicație a termenilor folosiți în această secțiune, a se vedea attributes(7).
       ┌─────────────────────────────────────────────────────────────────────────┬───────────────────┬─────────┐
       │ InterfațăAtributValoare │
       ├─────────────────────────────────────────────────────────────────────────┼───────────────────┼─────────┤
       │ stpncpy(), strncpy()                                                    │ Siguranța firelor │ MT-Safe │
       └─────────────────────────────────────────────────────────────────────────┴───────────────────┴─────────┘

STANDARDE

       strncpy()
              C11, POSIX.1-2008.

       stpncpy()
              POSIX.1-2008.

ISTORIC

       strncpy()
              C89, POSIX.1-2001, SVr4, 4.3BSD.

       stpncpy()
              glibc 1.07.  POSIX.1-2008.

AVERTISMENTE

       Numele  acestor  funcții este confuz. Aceste funcții produc o secvență de caractere cu umplutură nulă, nu
       un șir de caractere (a se vedea string_copying(7)). De exemplu:

           strncpy(buf, "1", 5);       // { '1',   0,   0,   0,   0 }
           strncpy(buf, "1234", 5);    // { '1', '2', '3', '4',   0 }
           strncpy(buf, "12345", 5);   // { '1', '2', '3', '4', '5' }
           strncpy(buf, "123456", 5);  // { '1', '2', '3', '4', '5' }

       Este imposibil să se facă distincția între trunchiere prin rezultatul apelului și o secvență de caractere
       care se potrivește cu memoria tampon de destinație;  trunchierea  ar  trebui  detectată  prin  compararea
       lungimii șirului de intrare cu dimensiunea memoriei tampon de destinație.

       Dacă aveți de gând să utilizați această funcție în apeluri înlănțuite, ar fi util să dezvoltați o funcție
       similară  care  să  accepte un indicator la capătul (un octet după ultimul element) al memoriei tampon de
       destinație în loc de dimensiunea acesteia.

EXEMPLE

       #include <err.h>
       #include <stdio.h>
       #include <stdlib.h>
       #include <string.h>

       int
       main(void)
       {
           char    *p;
           char    buf1[20];
           char    buf2[20];
           size_t  len;

           if (sizeof(buf2) < strlen("Salutare lume!"))
               errx("strncpy: truncating character sequence");
           strncpy(buf2, "Salutare lume!", sizeof(buf2));
           len = strnlen(buf2, sizeof(buf2));

           printf("[len = %zu]: ", len);
           fwrite(buf2, 1, len, stdout);
           putchar('\n');

           if (sizeof(buf1) < strlen("Salutare lume!"))
               errx("stpncpy: truncating character sequence");
           p = stpncpy(buf1, "Salutare lume!", sizeof(buf1));
           len = p - buf1;

           printf("[len = %zu]: ", len);
           fwrite(buf1, 1, len, stdout);
           putchar('\n');

           exit(EXIT_SUCCESS);
       }

CONSULTAȚI ȘI

       wcpncpy(3), string_copying(7)

TRADUCERE

       Traducerea   în   limba   română   a   acestui   manual   a   fost   făcută   de   Remus-Gabriel    Chelu
       <remusgabriel.chelu@disroot.org>

       Această  traducere  este  documentație  gratuită;  citiți  Licența publică generală GNU Versiunea 3 sau o
       versiune  ulterioară  cu  privire  la  condiții  privind  drepturile  de  autor.   NU  se   asumă   NICIO
       RESPONSABILITATE.

       Dacă  găsiți  erori  în  traducerea  acestui manual, vă rugăm să trimiteți un e-mail la translation-team-
       ro@lists.sourceforge.net.

Pagini de manual de Linux 6.9.1                   15 iunie 2024                                       stpncpy(3)