strcpy函数实现,错哪里?
#include <stdio.h>#define null 0
void strcpy(char* s,char* p);
main()
{
const char* b="carl_berg";char* a;
a=(char*)malloc(sizeof(b));
clrscr();
strcpy(a,b);
printf("%s",a);
}
void strcpy(char* a,char* b)
{
if(b==null)
printf("b is null!");
else
{
while(*a++=*b++);
}
}
[此贴子已经被作者于2005-12-26 20:43:33编辑过]
----------------解决方案--------------------------------------------------------
没错了,很奇怪
----------------解决方案--------------------------------------------------------
你把"string.h"头文件加进去呢?
----------------解决方案--------------------------------------------------------
应该是你定义的函数与库函数同名吧!
----------------解决方案--------------------------------------------------------
void strcpy(char* a,char* b)
{
if(b==null)
printf("b is null!");
else
{
while(*a++=*b++);
}
}
黄色部分请注意。
你这样做的结果是存于b[0]的一个字符在赋给*a后自增1,然后存于*a的这个字符又自增1。
应该改成*(a++)=*(b++)
[此贴子已经被作者于2005-12-26 23:23:16编辑过]
----------------解决方案--------------------------------------------------------