',也是占一个字符空间的,那么如果我们在利用strcpy拷贝字符串的时候,应该多加1个字符空间,就是专门留给这个' C语言字符串拷贝strcpy函数的陷阱分析 -电脑资料 '的,C语言字符串拷贝strcpy函数的陷阱分析。 如果我们不多加一个字符空间,会发生致命的错误,那么我们通过案例来说明。 ---------...">

C语言字符串拷贝strcpy函数的陷阱分析 -电脑资料

电脑资料 时间:2019-01-01 我要投稿
【www.unjs.com - 电脑资料】

   

    在C语言中,我们都知道字符串是永恒的话题,字符串含有很多地雷,你稍不留心就会被砸到,比方说,字符串的结尾是'\0',也是占一个字符空间的,那么如果我们在利用strcpy拷贝字符串的时候,应该多加1个字符空间,就是专门留给这个'\0'的,

C语言字符串拷贝strcpy函数的陷阱分析

    如果我们不多加一个字符空间,会发生致命的错误,那么我们通过案例来说明。

    -------------我是分割线------------------

   

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    # include 

    # include 

    # include 

    int main()

    {

    char str[] = "MengLiang";

    //此处分配空间没有考虑到'\0'

    char* New_str = (char*)malloc(strlen(str));

    strcpy(New_str, str);

    printf("The New_str = %s\n", New_str);

    free(New_str);

    New_str = NULL;

    system("pause");

    return 0;

    }

    -------------我是分割线------------------

    我在注释中已经写了,那么这小段程序的结果呢?

   

    -------------我是分割线------------------

    正确的修改为:

    -------------我是分割线------------------

   

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    # include 

    # include 

    # include 

    int main()

    {

    char str[] = "MengLiang";

    //此处的加1就是为'\0'来服务的

    char* New_str = (char*)malloc(strlen(str)+1);

    strcpy(New_str, str);

    printf("The New_str = %s\n", New_str);

    free(New_str);

    New_str = NULL;

    system("pause");

    return 0;

    }

    -------------我是分割线------------------

    C语言的自由意味着我们要自制!

    ----------------------------------------------

    本文出自 “享受科技带来的快乐” 博客,请务必保留此出处http://liam2199.blog.51cto.com/2879872/1420096

最新文章