程序的功能是:键盘输入两个字符串,被调函数将小串连接到大串之后。程序缺3处代码,请你把所缺代码提交。注意:不允许使用strlen、strcmp、strcat、strcpy等函数

程序的功能是:键盘输入两个字符串,被调函数将小串连接到大串之后。程序缺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;  

}/************************************/

//缺头文件和函数定义

/************************************/

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;  

}

运行结果及报错内容
#include <stdio.h>
void sub(char s1[], char *p1, char *p2) 
{
    int i;
    while(*p1)
    {
        p1++;
    }
    while(*p2)
    {
        *p1++=*p2++;
    *p1=0;
    }
    for(i=0;i!=0;i++)
    {
        s1[i]=*(p1+i);
    }
}


int main() 
{
    char s1[31], s2[11], *p1, *p2, *temp;
    p1 = gets(s1);
    p2 = gets(s2);
//此处编写代码,使p1指向大串的首字符,使p2指向小串的首字符
    if(*p1<*p2)
    {
        temp=p1;
        p1=p2;
        p2=temp;
    }
    printf("%s,%s\n",p1,p2);
    sub(s1, p1, p2); //此处缺少参数
    printf("%s\n",s1);
    return 0;
}


我的解答思路和尝试过的方法

我感觉被调函数问题不大,我如果输入
abcd
ABCD
能够达到预期结果,但是我如果输入
ABCD
abcd
运行结果就是错误的。

我想要达到的结果

Sample Input
ABCD
asdf
Sample Output
asdf,ABCD
asdfABCD

if(*p1<*p2)  这样只能比较第一个字符。应该是用循环逐个字符比较

img


这是个啥..