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进行修改操作了,不能通过引用进行修改字符串。

  • 相关阅读:
    [AT2064] [agc005_f] Many Easy Problems
    [AT2304] [agc010_c] Cleaning
    [AT2172] [agc007_e] Shik and Travel
    [AT2148] [arc063_c] Integers on a Tree
    [AT2363] [agc012_c] Tautonym Puzzle
    未能从程序集“netstandard, Version=2.0.0.0......”中加载类型“...”。
    Android Studio设置国内镜像代理
    新建一个浏览器APP
    Android Studio在Make Project时下载Grandle特别慢
    用JS添加和删除class类名
  • 原文地址:https://www.cnblogs.com/lgh1992314/p/5835365.html
Copyright © 2011-2022 走看看