一个C的语言的strcpy的问题
[b][/b]程序如下:
/*
* strcpy.c
*
* Created on: 2012-4-14
* Author: admin
*/
#include<stdio.h>
char *strcpy(char *strDest, char *strSrc)//将strsrc复制到strdest中去;
{
int i=0;
char *address=strDest;
while((*strDest++=*strSrc++)!='\0') //简洁牛;
i++;
return address;
}
int main()
{
char *p="abcdefg";
char *q=NULL;
char *str=strcpy(q,p);
printf("%s",*str);
return 0;
}
老是出现段错误 gdb调试后就是 address是空NULL;
请大家帮我改正一下
这个程序就是自己写strcpy函数麻烦大家了!!!
[解决办法]
char *mystrcpy(char* dest,char* src)
{
char *ret=dest;
if(!dest)
return dest;
if(!src)
{
*dest='\0';
reeturn dest;
}
while(*dest++=*src++);
return ret;
}
[解决办法]
char *address=strDest;
这句 你想将q指向的NULL给*address 是不是应该这样写 *address=0;*address=*strDest;
你那样写 你*address指向哪了? strDest的地址是这样的(&strDest)
如此看来 主函数没必要定义*q,定义了 子函数就没必要定义*address
[解决办法]
char *q=NULL;
char *str=strcpy(q,p);
q没分配空间。弄成数组,
char q[32];
char *str=strcpy(q,p);
[解决办法]
printf("%s",*str);
这句也错了。
改为:printf("%s",str);
[解决办法]
char *address=strDest;
这句 你想将q指向的NULL给*address 是不是应该这样写 *address=0;*address=*strDest;
你那样写 你*address指向哪了? strDest的地址是这样的(&strDest)
如此看来 主函数没必要定义*q,定义了 子函数就没必要定义*address
[解决办法]
c 假设你已成年,可以为自己的行为负责
请教
while((*strDest++=*strSrc++)!='\0') //简洁牛;
i++; // i 何用
[解决办法]
char* StrCpy(char *szpDest, char *szpSrc)
{
if(NULL != szpDest && NULL != szpSrc)
{
char *pTemp = szpDest;
while('\0' != (*ptemp++ = *szpSrc++));
return szpDest;
}
return 0;
}
这个应该没问题,我没上机调试,你自己调了看。
[解决办法]
上面的while('\0' != (*ptemp++ = *szpSrc++));
掉了个=号,应该是while('\0' != (*ptemp++ == *szpSrc++));
[解决办法]
把*q改成q[30]试试
[解决办法]
我看到了你直接给空指针赋值!!肯定会出现段错误!
[解决办法]
空指针