strncpy()据说可以防止缓冲区溢出.但是如果它在没有null终止的情况下防止溢出,那么随后的字符串操作将会溢出.所以为了防止这种情况,我发现自己在做:
strncpy( dest, src, LEN );
dest[LEN - 1] = '\0';
Run Code Online (Sandbox Code Playgroud)
man strncpy 得到:
strncpy()函数类似,只是复制了不超过n个字节的src.因此,如果src的前n个字节中没有空字节,则结果将不会以空值终止.
没有null终止看似无辜的东西,如:
printf( "FOO: %s\n", dest );
Run Code Online (Sandbox Code Playgroud)
......可能会崩溃
是否有更好,更安全的替代品strncpy()?
#include <iostream>
using namespace std;
int main()
{
char strin[206];
strin = "sds";
cout<<strin;
}
Run Code Online (Sandbox Code Playgroud)
为什么我会收到此错误?
error: incompatible types in assignment of 'const char [4]' to 'char [206]' //on line strin = "sds"
Run Code Online (Sandbox Code Playgroud)
我正在关注这个初学者教程