关于strcpy
来源:互联网 发布:网络运营推广岗位职责 编辑:程序博客网 时间:2024/06/08 16:30
http://blog.sina.com.cn/s/blog_4fee13cd01000cix.html
strcpy得到了很多面试人员的偏爱,其很大的体现出了C语言基本功.
char *strcpy(char *strDest, const char*strSrc);
{
}
有几个问题值得思考并注意:
1.用指针作为形参,在程序开始前应判断指针变量的合法性,利用断言assert
2.只作为输入参数,为了防止被编程人员恶意修改,应加入常量声明const
3.函数返回类型为,char*,其目的是为了方便实现链表表达式.在调用函数的过程中已经实现了把strSrc的内容复制到strDest
4.应注意对原始位置的保留.
5.该函数调用完成时是遇到'\0'结束符
下面是几个找错题:
试题1:
void test1()
{
}
试题2:
void test2()
{
}
试题3:
void test3(char* str1)
{
}
试题1字符串str1需要11个字节才能存放下(包括末尾的’\0’),而string只有10个字节的空间,strcpy会导致数组越界;从第5条可以看出,函数调用完成时已经将'\0'一同赋给了目的地址.
试题2,问题很严重,对string[10]数组的赋值本身没有错误,但很明显程序期望对string按字符串操作,这就需要额外的赋给一个'\0'结束符;另外如果没有'\0'结束标志,调用strcpy将不会结束,造成程序的不确定性,很危险.
试题3,一定要注意strlen(pstr),它和strcpy不同,遇到'\0'时结束,但并不计算\0'在内.所以应改为if(strlen( str1 ) <=10),另外要注意字符串首地址,数组,各种类型的指针作为形参,都退化为指针.即
void test3(char* str1)
{
sizeof(str1)只和编译器和CPU类型有关,32位CPU为4
}
- 关于strcpy()
- 关于strcpy
- 关于strcpy
- 关于strcpy源码分析
- 关于 strcpy 和 strncpy
- 关于strcpy函数
- 关于strcpy的解析?
- 关于strcpy和memcpy
- 关于strcpy函数
- 关于strcpy函数的思考
- 关于strcpy的面试问题
- 关于strcpy函数的说明
- 关于strcpy函数的实现
- 关于strcpy的面试题
- strcpy
- strcpy
- strcpy
- strcpy
- Android核心基础(十一)
- php 对于utf-8 格式下 substr出现截取乱码的处理
- android开发中自适应屏幕分辨率总结
- 推荐引擎分类介绍
- 一台电脑安装多个版本的jdk
- 关于strcpy
- 兜兜轉轉--閒話聊UNION
- hdu_4602 Partition
- Zend framework 之投票系统流程图
- Java从入门到精通——基础篇之Servlet与JSP的区别
- sql语句及 quoteInto()
- acm中c++与g++ 有什么区别?提交时,要注意什么?(详细一点...)
- Log4j学习总结
- Android基础总结(精华完整版)