#include<stdio.h>
void sm(char *a,char *b)
{
while(*a)
a++;
while(*b)
*a++=*b++;
*a='\0';
puts(a);
}
int main()
{
char str1[1000],str2[1000];
char *p1,*p2;
gets(str1);
gets(str2);
p1=str1;
p2=str2;
sm(p1,p2);
return 0;
}
这样就行了
#include <stdio.h>
void sm(char *a, char *b)
{
char *t = a;
while (*a)
a++;
while (*b)
*a++ = *b++;
*a = '\0';
puts(t);
}
int main()
{
char str1[1000], str2[1000];
char *p1, *p2;
gets(str1);
gets(str2);
p1 = str1;
p2 = str2;
sm(p1, p2);
return 0;
}
#include<stdio.h>
void sm(char* a, char* b)
{
char* c = a;
int i = 0;
while (*a)
{
c[i] = *a;
a++;
i++;
}
while (*b)
{
c[i] = *b;
b++;
i++;
}
c[i] = '\0';
puts(c);
}
int main()
{
char str1[1000], str2[1000];
char* p1, * p2;
gets_s(str1);
gets_s(str2);
p1 = str1;
p2 = str2;
sm(p1, p2);
return 0;
}
因为第9行 puts(a); 这时候指针a是指向字符串的结尾的结束符 ‘\0'.
这个输出可以放到主函数里第19行之后,puts(p1);
字符串指针a已经移到字符串结尾,另外a指向'\0'
,你要输出什么?
应该是sm(str1,str2);
还有字符串不能用=来复制,得用strcpy(str1,p1),p1复制到str1