- 论坛徽章:
- 0
|
本帖最后由 mgqw 于 2010-08-11 22:28 编辑
回复 1# yyangh
首先用:memcpy(buff1,buff,10);
printf("%s \n",buff1结果):
0123456789ljasdljwoinwq,knsiouwoeirwobnka
首先用:memcpy(buff1,buff,10);
printf("%s \n",buff1结果):
0123456789ljasdljwoinwq,knsiouwoeirwobnka
自己去掰手指头数数从0-9有几个数, memcpy是不会在末尾加字符串结束符的。
同样的代码,将这个地方改成:strcpy(buff1,buff);
printf("%s \n",buff1结果):
0123456789
第二个结果是我要的结果,但是同样的东西为什么会这样。
strcpy对了, 因为这个函数会默认给字符串末尾加结束符, 当然益出的情况在此不考虑。
后来我找了好久,在另一个函数(完全不相关的函数)注释了这样一句代码:
char * filebuff = (char *) malloc (52428800 * sizeof(char));
然后就两个结果都一样了,都是:
0123456789
这是奇怪啊,为什么会有这样的事发生呢?
那是因为malloc申请内存空间, 默认全部都是'\0', 也就是字符串结束符, 所以看起来都一样。
第一个问题如果你先memset( buff1, 0, sizeof(buff1) ) 只要buff1够大不越界,得到的结果也会是正确的, 不相信可以去实验下 |
|