#include
#include
void Strcat(char *s1, char *s2);
int main()
{
char str1[200];
char str2[100];
gets(str1);
gets(str2);
Strcat(str1, str2);
return 0;
}
void Strcat(char *s1,char *s2)
{
char str[1024];
char *s=str;
for(;*s1!='\0';s1++,s++)
*s=*s1;
s--;
for(;*s2!='\0';s2++,s++)
*s=*s2;
printf("%s\n",str);
}
s是指向str数组的指针,*s是str数组中的值。
s--是移动指针指向上一个地址,相当于str[i]和str[i-1]的关系。
单步调试一下
供参考:
#include <stdio.h>
#include <stdlib.h>
void Strcat(char *s1, char *s2);
int main()
{
char str1[200];
char str2[100];
gets(str1);
gets(str2);
Strcat(str1, str2);
return 0;
}
void Strcat(char *s1,char *s2)
{
char str[1024];
char *s=str;
for(;*s1!='\0';s1++,s++)
*s=*s1;
//s--; 这句是多余的,*s此时在'\0'位置。
for(;*s2!='\0';s2++,s++)
*s=*s2;
*s = '\0'; // 修改 这里漏了字符串str的结束符'\0'。
printf("%s\n",str);
}