一个数组奇怪的问题,char str2[8], strlen(str2) ==39 。谢谢先。
时间:2010-08-24
来源:互联网
memcpy之前的printf str2为何接了str1内容。
32位机,Linux 2.6.27
- #include <stdio.h>
- #include <string.h>
-
-
- int main()
- {
- char str1[32] ={"1111111111111111111111111111119"};
- char str2[8] = {"AAAAAAAy"};
- printf("%d\t %d\n", sizeof(str2), strlen(str2));
-
- printf("%s \t %s\n", str1, str2);
- memcpy(str1, str2, sizeof(str2));
- printf("%s \t %s\n", str1, str2);
-
- memmove(str1, str2, sizeof(str2));
- printf("%s \t %s\n", str1, str2);
-
- return 0;
- }
8 39
1111111111111111111111111111119 AAAAAAAy1111111111111111111111111111119
AAAAAAAy11111111111111111111119 AAAAAAAyAAAAAAAy11111111111111111111119
AAAAAAAy11111111111111111111119 AAAAAAAyAAAAAAAy11111111111111111111119
作者: 梅川内依酷 发布时间: 2010-08-24



故意的,绝结是故意的
作者: beyond_touch 发布时间: 2010-08-24
作者: hellioncu 发布时间: 2010-08-24
作者: davelv 发布时间: 2010-08-24
是这样的, 我是想看越界后,str2的位置,strlen 看来很执着,一直到‘\0’,根本不关心参数的大小。
作者: 梅川内依酷 发布时间: 2010-08-24


作者: daybreakcx 发布时间: 2010-08-24
是这样的, 我是想看越界后,str2的位置,strlen 看来很执着,一直到‘\0’,根 ...
梅川内依酷 发表于 2010-08-24 10:46
似乎你也不是不懂,strlen怎么能知道参数的大小呢
作者: hellioncu 发布时间: 2010-08-24

真没有故意的。 我是想看strlen的功能,结果让我吃惊, strlen不顾参数的长度吗?
作者: 梅川内依酷 发布时间: 2010-08-24
真没有故意的。 我是想看strlen的功能,结果让我吃惊, strlen ...
梅川内依酷 发表于 2010-08-24 10:53
C语言的指针信息中不包括长度(非指针自身长度)。但是数组包括,不过你的strlen这个函数参数是指针(纯数组不能作为函数传参,但是可以包装一下),你把数组传进去,就退化为指针,它自然得不到数组长度信息。
作者: davelv 发布时间: 2010-08-24
作者: daybreakcx 发布时间: 2010-08-24
真没有故意的。 我是想看strlen的功能,结果让我吃惊, strlen ...
梅川内依酷 发表于 2010-08-24 10:53
sizeof是运算符,编译器知道你的数据类型,根据数据类型算出来的。
strlen是函数,返回的是代码跑出来的结果。它哪知道你给的“字符串”本来是个啥。
作者: 狗气球 发布时间: 2010-08-24
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28