小编Him*_*pta的帖子

strncpy导致分段错误

我只是乱搞strncpy.

我的程序看起来像这样

typedef struct
{
    char from_str[10];
}test;

main ()
{

    test     s1;
    memset(&s1,0,sizeof(test));
    char       src[10]="himansh";
    char       dest[10];

    memset(dest,0,10);
    src[3]='\0';

    printf("src is %s and strlen is %d \n",
            src,strlen(src));

    fflush(stdout);

    strncpy(s1.from_str,src,100);

    printf("s1.from_str is %s , src is %s \n",
            s1.from_str,src);
    return 1;

}
Run Code Online (Sandbox Code Playgroud)

在我执行strncpy之前,我在"src"字符串中添加了一个"\ 0"字符,"src"字符串的长度变为3,目标数组的大小为10.但是在strncpy中我将要复制的字节数复制为100 .

这意味着我的源字符串以NULL结尾.现在strncpy像任何字符串函数应该尝试只复制3个字节,即使我提供的字节数大于3(在这种情况下为100).它做到了,但我也得到了分段错误.

我的结果如下所示

src is him and strlen is 3
s1.from_str is him , src is him
Segmentation fault (core dumped)
Run Code Online (Sandbox Code Playgroud)

为什么这个分段错误发生在这里.

有人可以帮我从这里出去吗.

c segmentation-fault strncpy

8
推荐指数
2
解决办法
1万
查看次数

标签 统计

c ×1

segmentation-fault ×1

strncpy ×1