.\" -*- coding: UTF-8 -*- '\" t .\" Copyright 2022 Alejandro Colomar .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH stpncpy 3 "20 iulie 2023" "Pagini de manual de Linux 6.05.01" .SH NUME stpncpy, strncpy \- reduce la zero un buffer cu lățime fixă și copiază un șir de caractere într\-o secvență de caractere cu trunchiere și reduce la zero restul acestuia .SH BIBLIOTECA Biblioteca C standard (\fIlibc\fP, \fI\-lc\fP) .SH REZUMAT .nf \fB#include \fP .PP \fBchar *strncpy(char \fP\fIdst\fP\fB[restrict .\fP\fIsz\fP\fB], const char *restrict \fP\fIsrc\fP\fB,\fP \fB size_t \fP\fIsz\fP\fB);\fP \fBchar *stpncpy(char \fP\fIdst\fP\fB[restrict .\fP\fIsz\fP\fB], const char *restrict \fP\fIsrc\fP\fB,\fP \fB size_t \fP\fIsz\fP\fB);\fP .fi .PP .RS -4 Cerințe pentru macrocomenzi de testare a caracteristicilor pentru glibc (consultați \fBfeature_test_macros\fP(7)): .RE .PP \fBstpncpy\fP(): .nf Începând cu glibc 2.10 _POSIX_C_SOURCE >= 200809L Înainte de glibc 2.10: _GNU_SOURCE .fi .SH DESCRIERE Aceste funcții copiază șirul de caractere indicat de \fIsrc\fP într\-o secvență de caractere cu umplutură nulă în memoria tampon cu lățime fixă indicată de \fIdst\fP. Î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Ă. .PP O implementare a acestor funcții ar putea fi: .PP .in +4n .EX char * strncpy(char *restrict dst, const char *restrict src, size_t sz) { stpncpy(dst, src, sz); return dst; } \& char * stpncpy(char *restrict dst, const char *restrict src, size_t sz) { bzero(dst, sz); return mempcpy(dst, src, strnlen(src, sz)); } .EE .in .SH "VALOAREA RETURNATĂ" .TP \fBstrncpy\fP() returnează \fIdst\fP. .TP \fBstpncpy\fP() returnează un indicator la un octet după ultimul caracter din secvența de caractere de destinație. .SH ATRIBUTE Pentru o explicație a termenilor folosiți în această secțiune, a se vedea \fBattributes\fP(7). .TS allbox; lbx lb lb l l l. Interfață Atribut Valoare T{ .na .nh \fBstpncpy\fP(), \fBstrncpy\fP() T} Siguranța firelor MT\-Safe .TE .sp 1 .SH STANDARDE .TP \fBstrncpy\fP() C11, POSIX.1\-2008. .TP \fBstpncpy\fP() POSIX.1\-2008. .SH STANDARDE .TP \fBstrncpy\fP() C89, POSIX.1\-2001, SVr4, 4.3BSD. .TP \fBstpncpy\fP() glibc 1.07. POSIX.1\-2008. .SH 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 \fBstring_copying\fP(7)). .PP 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. .PP 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. .SH EXEMPLE .\" SRC BEGIN (stpncpy.c) .EX #include #include #include #include \& int main(void) { char *p; char buf1[20]; char buf2[20]; size_t len; \& if (sizeof(buf2) < strlen("Salutare lume!")) warnx("strncpy: truncating character sequence"); strncpy(buf2, "Salutare lume!", sizeof(buf2)); len = strnlen(buf2, sizeof(buf2)); \& printf("[len = %zu]: ", len); printf("%.*s\en", (int) len, buf2); // "Salutare lume!" \& if (sizeof(buf1) < strlen("Salutare lume!")) warnx("stpncpy: truncating character sequence"); p = stpncpy(buf1, "Salutare lume!", sizeof(buf1)); len = p \- buf1; \& printf("[len = %zu]: ", len); printf("%.*s\en", (int) len, buf1); // "Salutare lume!" \& exit(EXIT_SUCCESS); } .EE .\" SRC END .SH "CONSULTAȚI ȘI" \fBwcpncpy\fP(3), \fBstring_copying\fP(7) .PP .SH TRADUCERE Traducerea în limba română a acestui manual a fost făcută de Remus-Gabriel Chelu . .PP Această traducere este documentație gratuită; citiți .UR https://www.gnu.org/licenses/gpl-3.0.html Licența publică generală GNU Versiunea 3 .UE sau o versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă NICIO RESPONSABILITATE. .PP Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la .MT translation-team-ro@lists.sourceforge.net .ME .