字符串小知识
来源:互联网 发布:软件开发监理细则 编辑:程序博客网 时间:2024/06/06 00:30
1、开辟一个大小为5个字节buf1的空间,向里面copy 10个字节的字符,没有出现段错误,并且打印buf的内容,打印出了10个字符。
2、开辟一个大小为5个字节buf1的空间,一个大小为10个字节的buf2的空间,向buf1中copy 10个字节的字符,没有出现段错误,并且打印buf的内容,打印出了10个字符。然后利用memcpy将buf1中的内容copy到buf2中,拷贝的大小为strlen(buf1),结果打印buf2,同样是10个字符。
考虑之后发现还是字符串惹的祸,其实copy到buf1中的只有前5个字节,后面5个字节的内容在buf1外面,由于printf和strlen都是遇到‘\0’,结束,导致打印的东西和想象的不同。打印buf1和buf2的地址,发现中间隔了一定的空间,如果buf2中有数据,向buf1中copy足够长度的字符,会覆盖buf2中的字符。所以以后用字符串要更加的注意。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char *buf = calloc(1,5);
char *buf1 = calloc(1,10);
printf("buf_addr = %p\n",buf);
printf("buf1_addr = %p\n",buf1);
memcpy(buf, "123456789", 9);
printf("buf = %s\n",buf);
printf("buf1 = %s\n",buf1);
memcpy(buf1, buf, strlen(buf));
printf("buf1 = %s\n",buf1);
return 0;
}
0 0
- 字符串小知识
- 字符串赋值小知识
- C#字符串小知识
- 小知识 . 字符串与指针
- 字符串里琐碎小知识
- 读入带空格的字符串方法(小知识)
- Java小知识-判断字符串中有多少中文
- 小知识之字符串排序遇到的问题参考
- 小知识
- 小知识
- 小知识
- 小知识
- 小知识
- 小知识
- 小知识
- 小知识
- 小知识
- 小知识
- 如何使用UIAutomation进行iOS 自动化测试(二)
- 三国鼎立论高清
- <大败局>感触
- ElasticSearch的安装和相关插件的安装
- nginx学习笔记
- 字符串小知识
- Linux tune2fs 命令
- T-SQL查询: PIVOT/UNPIVOT 逻辑操作步骤
- windows搭建php开发环境(php5.2+apache2)
- Toast和Progressbar结合的实例
- orcale 主键约束
- linux命令小记
- maven-appfuse配备步骤
- oc的成员变量的属性