读书人

自各儿写的strcat 请帮忙看看

发布时间: 2012-10-09 10:21:45 作者: rapoo

自己写的strcat 请帮忙看看
char * mystrcat1(char *dest,char *src)
{
while(*dest!='\0')
dest++;
while(*src!='\0')
{
*dest=*src;
dest++;
src++;
}
*dest='\0';
return dest;
}
#include <stdio.h>
main()
{
char s1[80]="i love";
char s2[40]="you!";
printf("%s",mystrcat1(s1,s2));
}
请大侠们看看 没有输出结果!

[解决办法]

C/C++ code
char * mystrcat1(char *dest,char *src){    char *p = dest;    while(*dest!='\0')        dest++;    while(*src!='\0')    {        *dest=*src;        dest++;        src++;    }    *dest='\0';    return p;}
[解决办法]
char * mystrcat1(char *dest,char *src)
{
char *start = dest;
while(*dest!='\0')
dest++;
while(*src!='\0')
{
*dest=*src;
dest++;
src++;
}
*dest='\0'; //这时的dest返回的是指向最后一个'\0'的指针,而不是两个字符串合并后的首地址。所以,在进行复制前需要将dest的首地址保存一下。最后在复制给dest.
dest = start;
return dest;
}
[解决办法]
你的函数char* mystrcat1(char s1[],char s2[])返回的指针dest指向'\0',所以不会打印出任何东西。
这个函数不需要返回任何东西
void mystrcat1(char *s1, char *s2){
while(*s1)
s1++;
while(*s1 = *s2){
s1++;
s2++;
}
}

[解决办法]
C/C++ code
#include <stdio.h>char* mystrcat1(char* dest, const char* src){    char* p = dest;    char* q = (char*)src;    while(*p++);    p--;    while(*q)    {        *p++ = *q++;    }    *p = '\0';    return dest;}int main(int argc, char* argv[]){    char s1[80] = "i love";    char s2[40] = " you!";    printf("%s\n", mystrcat1(s1, s2));     return 0;} 

读书人网 >C语言

热点推荐