相关疑难解决方法(0)

为什么strncpy不为null终止?

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()

c strncpy

71
推荐指数
7
解决办法
8万
查看次数

用char []创建一个字符串

#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)

我正在关注这个初学者教程

c++ string char

1
推荐指数
1
解决办法
156
查看次数

标签 统计

c ×1

c++ ×1

char ×1

string ×1

strncpy ×1