本文共 1118 字,大约阅读时间需要 3 分钟。
在C语言中,我们都知道字符串是永恒的话题,字符串含有很多地雷,你稍不留心就会被砸到,比方说,字符串的结尾是'\0',也是占一个字符空间的,那么如果我们在利用strcpy拷贝字符串的时候,应该多加1个字符空间,就是专门留给这个'\0'的。
如果我们不多加一个字符空间,会发生致命的错误,那么我们通过案例来说明。
-------------我是分割线------------------
# 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;}
-------------我是分割线------------------
我在注释中已经写了,那么这小段程序的结果呢?
-------------我是分割线------------------
正确的修改为:
-------------我是分割线------------------
# 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://beoml.baihongyu.com/