Lorsque j'essaie d'utiliser strcpy
pour copier une chaîne, cela m'a donné une erreur de compilation.
error C4996 'strcpy': This function or variable may be unsafe.
Pensez à utiliser strcpy_s
au lieu. Pour désactiver la dépréciation, utilisez _CRT_SECURE_NO_WARNINGS
. Voir l'aide en ligne pour plus de détails.
Quelle est la différence entre strcpy
et strcpy_s
?
strcpy est une fonction dangereuse. Lorsque vous essayez de copier une chaîne à l'aide de strcpy (), dans un tampon qui n'est pas assez grand pour la contenir, cela provoquera un débordement de tampon.
strcpy_s () est un version à sécurité renforcée de strcpy (). Avec strcpy_s, vous pouvez spécifier la taille du tampon de destination pour éviter les débordements de tampon pendant les copies.
char tuna[5]; // a buffer which holds 5 chars incluing the null character.
char salmon[] = "A string which is longer than 5 chars";
strcpy( tuna, salmon ); // This will corrupt your memory because of the buffer overflow.
strcpy_s( tuna, 5, salmon ); // strcpy_s will not write more than 5 chars.
Je voudrais ajouter que si vous essayez de compiler du code d'autres personnes, MS se plaindra toujours des fonctions dangereuses dans la bibliothèque standard. Définissez simplement _CRT_SECURE_NO_WARNINGS
comme le message d'erreur vous le dit et MSVC fonctionnera comme n'importe quel autre compilateur.