读书人

一个C的语言的strcpy的有关问题

发布时间: 2012-09-05 15:19:34 作者: rapoo

一个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]试试
[解决办法]
我看到了你直接给空指针赋值!!肯定会出现段错误!
[解决办法]
空指针

读书人网 >C语言

热点推荐