问答题 编写函数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后。