#define __STDC_WANT_LIB_EXT1__ 1 #include <string.h> // <cstring> en C++
errno_t memcpy_s( void * restrict destination, rsize_t destinationSize, const void * restrict source, rsize_t size );
La fonction memcpy_s est la variante avec contrôle de bornes de memcpy. Elle vérifie notamment que la zone de destination est assez grande avant d'effectuer la copie.
La fonction retourne 0 en cas de succès. En cas d'erreur de contrainte, elle retourne un code non nul et peut remettre la zone de destination dans un état défini par l'implémentation.
Le programme suivant montre une utilisation simple de memcpy_s.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
#define __STDC_WANT_LIB_EXT1__ 1 #include <stdio.h> #include <string.h> int main() { #ifdef __STDC_LIB_EXT1__ char source[] = "ABCDE"; char target[8]; if ( memcpy_s( target, sizeof target, source, sizeof source ) == 0 ) { printf( "%s\n", target ); } #else puts( "L'annexe K n'est pas disponible sur cette implementation." ); #endif return 0; } |
Voici le résultat produit par cet exemple.
ABCDE
Améliorations / Corrections
Vous avez des améliorations (ou des corrections) à proposer pour ce document : je vous remerçie par avance de m'en faire part, cela m'aide à améliorer le site.
Emplacement :
Description des améliorations :