自编字符串拷贝函数出现问题

来源:百度知道 编辑:UC知道 时间:2024/05/16 10:52:03
#include<stdio.h>

char * my_strcpy(char * dest,const char *src,int count)
{
int n=count-1;
char *tmp = dest;
while (n--&&((*dest++ = *src++) != '\0'))
;
dest[count-1]='\0'; //存个字符串结束符进去
return tmp;
}
main()
{
char dest[5];
char *scr="abcdefg";
my_strcpy(dest,scr,sizeof(dest));
printf("dest=%s\n",dest);
printf("dest[4]=%d\n",dest[4]); //想打印看'\0'结束符存进dest[4]没有
}
上面我自己编了一个字符串拷贝函数,是向一个长度不够的数组拷贝字符串,然后我想在数组的最后存进一个字符串结束符'\0',当我想打印看'\0'结束符存进dest[4]没有。但VC编译出来的结果却不如人愿。VC编译运行结果如下:
dest=abcd烫烫
dest[4]=-52
press any key to continue
请网师们指点问题出在哪里。

char dest[5];这样声明的数组,dest作为首元素地址,是个常量,不能进行dest++操作
既然在函数里声明了char *tmp=dest
后面用*tmp++=*src++就可以了
应该是不小心手误了吧