编写一个函数fun() 它的功能是:实现两个字符串的连接(不使用库函数strcat 即把p2
问题详情
编写一个函数fun(),它的功能是:实现两个字符串的连接(不使用库函数strcat,即把p2所指的字符串连接到p1所指的字符串后。
例如,分别输入下面两个字符串:
FirstString
SecondString
则程序输出:
FirstStringSecondString
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号小填入所编写的若干语句。
试题程序:
include <stdio. h>
include<conio. h>
void fun (char pi[],char p2[])
{
}
main ()
{
char s1[80],s2[40];
clrscr ();
printf("Enter s1 and s2:n");
scanf ("%s%s", s1, s2);
printf ("s1=%sn", s1);
printf("s2=%sn",s2);
printf("Invoke fun(s1,s2) :n");
fun(s1,s2);
printf("After invoking:n");
printf ("%sn", s1);
}请帮忙给出正确答案和分析,谢谢!
参考答案
正确答案:void fun (char p1[]char p2[]){int ij;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'; /*在字符串最后加上结束标记符*/}
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'; /*在字符串最后加上结束标记符*/} 解析:本题用两个循环,第1个循环的作用是将i走到第1个字符串的末尾。第2个循环的作用是将第2个字符串的字符连到第1个字符串的末尾。