问答题 1.  编写函数fun(),其功能是:实现两个字符串的连接[不要使用库函数strcat()],即把p2所指的字符串连接到p1所指的字符串的后面。
    例如,分别输入下面两个字符串:
    FirstString--
    SecondString
    程序输出“FirstString--SecondString”。
    注意:部分源程序如下。
    请勿改动main()函数和其他函数中的任何内容,仅在函数fun()的花括号中填入所编写的若干语句。
    试题程序:
    #include<stdlib.h>
    #include<stdio.h>
    #include<conio.h>
    void fun(char p1[],char p2[])
    {
    }
    void main()
    {
    char s1[80],s2[40];
    system("CLS");
    printf("Enter s1 and s2:\n");
    scanf("%s%s",s1,s2);
    printf("s1=%s\n",s1);
    printf("s2=%s\n",s2);
    printf("Invoke fun(s1,s2):\n");
    fun(s1,s2);
    printf("After invoking:\n");
    printf("%s\n",s1);
    }
【正确答案】void fun(char p1[],char p2[])
   {
   int i,j;
   for(i=0;p1[i]!='\0';i++);  //求出i为p1字符串的总长度,包括结束标记符
   for(j=0;p2[j]!='\0';j++)
   p1[i++]=p2[j];    //将p2字符串连在p1字符串后面
   p1[i]='\0';      //在字符串最后加上结束标记符
   }
【答案解析】 本题考查字符串连接函数的实现。本题通过两个for循环完成此功能。第一个循环的作用是计算出字符串的长度,如果p1是'\0'(即此字符是字符串尾),退出循环,i中保存的数值即字符串长度。第二个循环的作用是循环遍历字符串p2的字符,利用语句“p1[i++]=p2[j];”将p2中的字符逐个插到字符串p1后。