zoukankan      html  css  js  c++  java
  • C语言学习之我见-strncpy()字符串复制函数(可控制范围)

    strncpy()函数,用于两个字符串值的复制。
    (1)函数原型

     char *strncpy(char * _Dest,const char * _Source,size_t _Count);
    

    (2)头文件

    string.h
    

    (3)功能

    将从const char * _Source到''结尾的字符串(包括'')复制到char * _Dest
    所指的字符串处。
    size_t _Count确定对const char * _Source的最大截取范围
    返回值char * = char * _Dest
    
    

    (4)基础实例代码

        char a[30] = "12345678901234567890";
    	char b[]="zobol";
    	for(int i=0;i<30;++i)
    	{
    		printf("%c ",a[i]);//将字符数组中的所有值都输出
    	}
    	for(int i=0;i<6;++i)
    	{
    		printf("%c ",b[i]);
    	}
    
    	strcpy(a,b,5);//关键函数
    	for(int i=0;i<30;++i)
    	{
    		printf("%c ",a[i]);
    	}
    	printf("%s
    ",a);
    

    (5)输出情况
    在这里插入图片描述
    (6)问题1:char * _Dest所指向的必须是字符串的首地址吗?
    回答:不需要,可以从中间a+3输入,或者&a[i]

    strncpy(a+3,b,5);
    strncpy(&a[4],b,5);
    

    在这里插入图片描述
    (7)问题2:返回值char*是做什么用?
    回答:char*返回的是第一个参数,主要是用来方便printf()函数输出。

    	printf("%s
    ",strncpy(&a[3],b,5));
    

    在这里插入图片描述
    (8)问题3:size_t _Count是用来做什么的?
    回答:是用来确保复制,不会导致数据溢出。一般设定为char * _Dest所指向字符串的(最大值-1)。记得确保给''的位置也要准备好。

    如果对你有帮助,欢迎加我的个人公众号:zobol的魔法藏书室

  • 相关阅读:
    k8s 集群节点重启后etcd Unhealthy 解决
    no matches for kind “Deployment” in version "extensions/v1beta1 问题解决
    go web 读书笔记 (go 与 web 应用)
    Linux设置ssh超时时间
    C++中继承方式
    C++中类中范围解析运算符::和点运算符(.)
    C++ 中类与结构体的区别
    C++中. 与 -> 运算符的区别
    C++之字符串
    C++之数组
  • 原文地址:https://www.cnblogs.com/zobol/p/14358027.html
Copyright © 2011-2022 走看看