strcpy详解
来源:互联网 发布:深圳cnc编程招聘 编辑:程序博客网 时间:2024/06/05 05:10
strcpy是标准C库函数。strcpy提供了字符串的复制。即strcpy只用于字符串复制,并且它不仅复制字符串内容之外,还会复制字符串的结束符。已知strcpy函数的原型是:char* strcpy(char* dest, const char* src);
char * strcpy(char * dest, const char * src) // 实现src到dest的复制{ if ((NULL == src) || (NULL == dest)) //判断参数src和dest的有效性 { return NULL;//or throw "Invalid argument(s)"; //[2] } char *strdest = dest; //保存目标字符串的首地址 while ((*strDest++ = *strSrc++)!='\0'); //把src字符串的内容复制到dest下 return strdest;}
所以使用strcpy 需要注意下面几个问题:
1、strcpy只能复制字符串。
2、strcpy不需要指定长度,它遇到被复制字符的串结束符"\0"才结束,所以容易溢出。
下面是关于strcpy的试题:
找错
试题1:
Void test1() { char string[10]; char* str1="0123456789"; strcpy(string, str1); }
试题2:
Void test2() { char string[10], str1[10]; for(I=0; I<10;I++) { str1[i] ='a'; } strcpy(string, str1); }
试题3:
Void test3(char* str1) { char string[10]; if(strlen(str1) <= 10) { strcpy(string, str1); } }
解答:
test1: 字符串str1需要11个字节才能存放下(包括末尾的'\0'),而string只有10个字节的空间,strcpy会导致数组越界
test2: 如果面试者指出字符数组str1不能在数组内结束可以给3分;如果面试者指出strcpy(string, str1)调用使得从str1内存起复制到string内存起所复制的字节数具有不确定性可以给7分,在此基础上指出库函数strcpy工作方式的给10分
test3: if(strlen(str1) <= 10)应改为if(strlen(str1) < 10),因为strlen的结果未统计'\0'所占用的1个字节
剖析:
考查对基本功的掌握:
(1)字符串以'\0'结尾;
(2)对数组越界把握的敏感度;
- strcpy 详解
- strcpy详解
- strcpy详解
- strcpy memcpy memset详解
- strcpy, memcpy, memset详解
- strcpy函数详解
- strcpy()函数详解
- memset()函数详解+strcpy()+memcpy()
- c语言strcpy函数详解
- strcpy函数详解及strcpy与strncpy比较
- strcpy
- strcpy
- strcpy
- strcpy
- strcpy
- strcpy
- strcpy
- strcpy
- .Net之路(三)如何连接数据库?
- .NET 下运用策略模式
- Tomcat的编码设置
- 深入理解java虚拟机读书笔记之-----Java虚拟机
- zend Studio的使用
- strcpy详解
- Visual C++ 用户 使用 ADO 文档的方法
- 今天的收获 类与对象的复习
- mysql重置密码
- tipswindown
- ora-00823问题
- Java设计模式十五:备忘录模式(Memento)
- js获取当前时间以及日期格式化
- mysql join的分类