自己写的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));
}
请大侠们看看 没有输出结果!
[解决办法]
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++;
}
}
[解决办法]
#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;}