zoukankan      html  css  js  c++  java
  • strncpy函数

    函数原型:extern char *strncpy(char *dest, char *src, int n)

    参数说明:dest为目的字符串,src为源字符串,n。
            
    所在库名:#include <string.h>
      
    函数功能:将src中的前n个字符(不包含"/0")复制到dest中,如果dest长度大于src,则复制完src中指定的前n个字符后其余全部用"/0"填充。
      
    返回说明:返回指向dest的。

    其它说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串,否则发生内存读写异常。

    实例: 

    #include<string.h>
    #include
    <stdio.h>
    int main()
    {
        
    char *src="sky2098,please try again!";
        
    char dest[100]="Hello,I am sky2098,I like writing!";  //定义字符串常量
        int n=strlen(src);
        printf(
    "Before copying dest is: %s ",dest);

        strncpy(dest,src,n);   
    //复制操作
        printf("After copying dest is: %s ",dest);
     
        
    return 0;
    }

    在VC++ 6.0编译运行:

    复制成功。

    如果我们这样实现,则会发生内存异常:

    #include<string.h>
    #include
    <stdio.h>
    int main()
    {
        
    char *src="sky2098,please try again!";
        
    char *dest="Hello,I am sky2098,I like writing!";
        
    int n=strlen(src);
        printf(
    "Before copying dest is: %s ",dest);

        strncpy(dest,src,n);    
    //拷贝src中的字符到dest中
        printf("After copying dest is: %s ",dest);
     
        
    return 0;
    }

    在VC++ 6.0编译运行:

    可见,在没有复制时是正常的,因为打印出了dest的初始值,但是复制以后没有吧dest打印出来。

    出现异常主要是由于我们对dest进行修改操作了,不能通过引用进行修改字符串。

  • 相关阅读:
    微信公众号扫一扫接口
    JDBC-用户登录验证(sql注入)
    JDBC
    Shell脚本
    java-变量总结
    java-那些方法不能被重写
    java-数组工具类
    java-类初始化与实例初始化
    java-static
    java-native修饰符
  • 原文地址:https://www.cnblogs.com/lgh1992314/p/5835365.html
Copyright © 2011-2022 走看看