C语言字符串拷贝strcpy函数的陷阱分析
2014-05-30 18:04
204 查看
在C语言中,我们都知道字符串是永恒的话题,字符串含有很多地雷,你稍不留心就会被砸到,比方说,字符串的结尾是'\0',也是占一个字符空间的,那么如果我们在利用strcpy拷贝字符串的时候,应该多加1个字符空间,就是专门留给这个'\0'的。
如果我们不多加一个字符空间,会发生致命的错误,那么我们通过案例来说明。
-------------我是分割线------------------
我在注释中已经写了,那么这小段程序的结果呢?
-------------我是分割线------------------
正确的修改为:
-------------我是分割线------------------
C语言的自由意味着我们要自制!
----------------------------------------------
如果我们不多加一个字符空间,会发生致命的错误,那么我们通过案例来说明。
-------------我是分割线------------------
# include <stdio.h> # include <stdlib.h> # include <string.h> 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 <stdio.h> # include <stdlib.h> # include <string.h> 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语言的自由意味着我们要自制!
----------------------------------------------
相关文章推荐
- C语言:重写strcpy函数,拷贝字符串的内容
- C语言 编写程序实现字符串拷贝,不允许调用strcpy函数。
- 【C语言】字符串--strcpy函数解答及其分析
- 面试点:字符串strcpy函数(C语言面试题分析之二)
- C语言中字符数组和字符串指针分析
- C语言中字符数组和字符串指针分析
- C语言中字符数组和字符串指针分析
- C语言中字符数组和字符串指针分析
- C语言字符串拷贝
- 5、不用库函数,实现C语言中的字符串拷贝charcpy()
- 【C语言】数组--字符串初始化数组的方法分析
- C语言中字符数组和字符串指针分析
- C语言中字符数组和字符串指针分析
- C语言中字符数组和字符串指针分析
- C语言中字符数组和字符串指针分析
- C语言调用汇编语言 实现字符串拷贝
- C语言中字符数组和字符串指针分析
- C语言字符串拷贝
- C语言中字符数组和字符串指针分析
- ARM汇编程序---C语言调用ARM汇编实现字符串的拷贝