C语言-指针与字符串:被调函数将小串追加到大串之后(程序填空)
Description
程序有框架如下。程序的功能是:键盘输入两个字符串,被调函数将小串连接到大串之后。程序缺3处代码,请你把所缺代码提交。注意:不允许使用strlen、strcmp、strcat、strcpy等函数
/************************************/
//缺头文件和函数定义
/************************************/
int main()
{
char s1[31],s2[11],*p1,*p2,*t;
p1=gets(s1);
p2=gets(s2);
//此处编写代码,使p1指向大串的首字符,使p2指向小串的首字符
printf("%s,%s\n",p1,p2);
sub(_______); //此处缺少参数
printf("%s\n",s1);
return 0;
}
Input
输入两个串,第一个串不超过20字符,第二个串不超过10字符
Output
先输出大串和小串,然后再输出连接后的串
Sample Input
ABCD
asdf
Sample Output
asdf,ABCD
asdfABCD
#include <stdio.h>
#include <stdlib.h>
void sub(char *p1, char *p2, char *t)
{
char s[11];
int i = 0, count;
char *p3 = p2;
if(p2 != t)
{
//asd ASD
while(*p1 != '\0')
{
p1++;
}
while(*p2!= '\0')
{
*p1 = *p2;
p2++;
p1++;
}
*p1 = '\0';
}
else
{
// ASD asd
while(*p3 != '\0')
{
s[i] = *p3;
p3++ ;
i++;
}
s[i] = '\0';
for( ; *p1 != '\0'; p1++, p2++)
*p2 = *p1;
count = i - 1;
i = 0;
for( ; i <= count; i++, p2++)
{
*p2 = s[i];
}
*p2 = '\0';
}
}
int main()
{
char s1[31],s2[11],*p1,*p2,*t;
p1=gets(s1);
p2=gets(s2);
if(*p1 <= *p2)
{
t=p1;
p1=p2;
p2=t;
}
printf("%s,%s\n",p1,p2);
sub(p1,p2,t); //此处缺少参数
printf("%s\n",s1);
return 0;
}
第二种
void sub(char *p1,char *p2,char *s1)
{
char s3[31];
int i=0,j=0;
while(*p1 != '\0')
{
s3[i] = *p1;
p1++;
i++;
}
while(*p2 != '\0')
{
s3[i] = *p2;
p2++;
i++;
}
s3[i]= '\0';
while(s3[j])
{
*s1 = s3[j];
s1++;
j++;
}
}
int main()
{
char s1[31],s2[11],*p1,*p2,*t;
p1=gets(s1);
p2=gets(s2);
char *p3,*p4;
p3 = p1;
p4 = p2;
if(*p1 == *p2 )
{
while(*p1 == *p2 )
{
p1++;
p2++;
if(*p1 =='\0' && *p2!='\0')
{
t=p3;
p3=p4;
p4=t;
break;
}
else if(*p1 !='\0' && *p2=='\0')
{
break;
}
else if(*p1 =='\0' && *p2=='\0' && *p1 < *p2)
{
t=p3;
p3=p4;
p4=t;
break;
}
}
}
else if(*p1 < *p2)
{
t=p3;
p3=p4;
p4=t;
}
printf("%s,%s\n",p3,p4);
sub(p3,p4,s1); //此处缺少参数
printf("%s\n",s1);
return 0;
}