strcpy,strcat,strlen
来源:互联网 发布:tp 开源项目源码 编辑:程序博客网 时间:2024/05/20 19:17
1.字符串strlen()的值,是否和她占据内存空间相同?
strlen()函数的返回值不包含‘/0’字符,
所以它比他占据的空间小1(所占据的空间可用sizeof确定),
此函数声明在<string.h>中
他的返回值是size_t型,声明在<stddef.h>中,Typedef unsigned int size_t;
2.strcpy函数存在的潜在风险,如何避免?
strcpy(string1,string2);将string1复制到string2中,这个复制包含'/0'。
风险之一就是string2的长度比string1长的话,string1就不包含'/0',没有结束符号会在以后使用中带来很大的问题
可以增加一个判断
if(sizeof(string2)<=sizeof(string1))
strcpy(string1,string2);
else
pringtf("源字符串太长");
3.不要试图输出一个没有字符串结束标志的数组,一下代码是错误的,
char str[] = {'h', 'e', 'l', 'o'};
printf("%s",str);
purts(str);
由于字符数组str没有结束符'/0',printf和puts会在输出hello后,继续遍历后面的内存单元,直到遇到/0为止,这样会输出不确定的字符
4.strcpy(),strcat(),strcmp(),strncpy(),strncat(),内部到底是如何运行的?
strcpy()是把源字符串复制到目标字符串,复制包含了终止符'/0',目标字符串原有的信息将被删除,原字符串不变
strcat()把原字符串复制到目标变量的结尾,源字符串不变
strcmp(string1,string2),比较两个字符串,返回一个小于,等于,大于0的值,对应string1小于;等于,大于string2;目标字符串和员字符串不变
strncpy(string1,string2,n);把源字符串string2的前n个字符复制到string1中,此复制不包含终止符/0,源字符串不变
strncat(string1,string2,n);把源字符串string2的前n个字符复制到目标字符串string1的结尾,源字符串不变
待续添加。。。。。有错望指出
- strcpy,strcat,strlen
- strcat strcpy strcmp strlen
- strcpy strcat strlen
- strcpy strcat strlen
- String,strcpy,strcat,strlen
- strcpy,strlen,strcat原形
- strlen,strcpy,strcat,strcmp,strstr
- strcpy,strcmp,strlen,strcat总结
- strcpy,strcat,strlen函数原型
- strcmp && strcpy && strlen && strcat 源码
- strcpy, strcat, strcmp, strlen,memcpy
- strcpy/strcmp/strlen/strcat/strstr
- strcmp && strcpy && strlen && strcat 源码
- strcpy,strlen,strcat源码[MSDN]
- strcat, strcpy, strlen, strcmp实现
- strcmp && strcpy && strlen && strcat 源码
- strlen、strcat、strcpy函数实现
- 模拟实现strlen,strcpy,strcat
- pku2492 A Bug's Life
- log4j:WARN Please initialize the log4j system properly 问题解决
- 合作开发项目总结——机房收费系统
- 中位数的应用—士兵站队问题
- Linux中的内存分配和释放之__alloc_pages()函数分析
- strcpy,strcat,strlen
- ..
- 自己的JAVA基础中的一下乱七八糟的问题(一)
- 海茶4测试补丁
- 等考四季数据库
- pku1182 食物链
- DirectDraw 基础篇
- HttpModule与HttpHandler详解
- HTTP