There\'re certain cases when I really need strncpy()
funcitonalty - for example I have a function in a predefined interface that is passed an address of the buf
The problem you're facing here is that your function is unsafe in itself, just like strncpy()
is. It is unsafe because callers of your function might forget that the returned strings are not null terminated. If this really is the desired behavior of your function I recommend not to define _CRT_SECURE_NO_WARNINGS
and disable the warnings globally but use #pragmas
instead:
// document here exactly why you can not use strncpy_s
#pragma warning( push )
#pragma warning( disable : 4996 )
// your code that uses strncpy instead of strncpy_s
#pragma warning( pop )
That way you disable those warnings only for those situations where you absolutely have to use unsafe functions.