我是靠谱客的博主 故意超短裙,最近开发中收集的这篇文章主要介绍strncpystrncpy,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

strncpy

原型

char * strncpy(char  *  dest, char  * src, size_t  n);

作用:将src前n个字符放入deset所指空间中.

打印函数如下:

void print_string(char * c , int n)
{
    for(int i = 0 ; i < n ; i++)
    {
	if(c[i] == '')
	{
	    cout << "NULL";
	}
	cout << c[i] << ' ';
    }
}

以下所说len(char * c)包含’’.

当len(deset)>=len(src):

若n=(0,src长度),也就是1len(src)-1的时候,就是将src中前1len(src)-1的字符复制给dest.没有将’’复制过去,所以需要开始就把dest初始化为’’.

演示如下:

int main()
{
    char array1[10];
    
    memset(array1 , '' , sizeof(array1));
    strncpy(array1, "1234" ,4);
    print_string(array1,10);
    
    cout << endl;
    
	    memset(array1 , '' , sizeof(array1));
    strncpy(array1, "1234" ,3);
    print_string(array1,10);
    
    cout << endl;
    return 0;
}

结果:
在这里插入图片描述

若n=len(src),相当于将包括’’整个src复制到dest中,所以最后一位是’’,这个例子为了方便,将一开始的字符数组都初始化为’’了.

演示如下:

int main()
{
    char array1[10];
    memset(array1 , '' , sizeof(array1));
    strncpy(array1, "1234" ,sizeof("1234"));
    print_string(array1,10);
    cout << endl;
}

结果:
在这里插入图片描述

若n=len(dest),也是将src包含’’复制到dest中,dest剩余大小自动设置为’’.

int main()
{
    char array1[10];
    strncpy(array1, "1234" ,sizeof(array1));
    print_string(array1,10);
    cout << endl;
    return 0;
}

结果:
在这里插入图片描述

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YGJX3ATt-1590332768259)(2019-12-28_16-40.png)]

当len(dest) < len(src)

一般是把len(dest)长度的src复制过去,然后将最后一位换成’’.

综上,如果想把尽可能多的src中的字符复制到dest中,一般将n设为len(dest),然后把最后以为换成’’,就可以避免很多问题,也不用一开始把dest设置为’’.

举例:

int main()
{
     char array1[10];
    strncpy(array1, "1234" ,sizeof(array1));
    array1[9]='';
    print_string(array1,strlen(array1));

    cout << endl;

    strncpy(array1, "123456789005465123" ,sizeof(array1));
    array1[9]='';
    print_string(array1,strlen(array1));

    cout << endl;
    
    return 0;
}

结果:

在这里插入图片描述

最后

以上就是故意超短裙为你收集整理的strncpystrncpy的全部内容,希望文章能够帮你解决strncpystrncpy所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(49)

评论列表共有 0 条评论

立即
投稿
返回
顶部