现在的位置: 首页 > 综合 > 正文

85 复制两个字符串 A 和 B。字符串A的后几个字节和字符串B的前几个字节重叠

2018年01月20日 ⁄ 综合 ⁄ 共 801字 ⁄ 字号 评论关闭

85.又见字符串的问题
1.给出一个函数来复制两个字符串 A  和 B。字符串 A  的后几个字节和字符串 B  的前几个字
节重叠。分析:记住,这种题目往往就是考你对边界的考虑情况。

/*
85.又见字符串的问题
1.给出一个函数来复制两个字符串A和 B。字符串A的后几个字节和字符串B的前几个字
节重叠。分析:记住,这种题目往往就是考你对边界的考虑情况。
*/

#include<iostream>
#include<stdio.h>
#include<string.h>
using namespace std;
#define N 101

void myStrcpy(char a[],char b[])
{
	char c[N];
	int len,len2,i,j,k,f;
	len=strlen(a);
	
	f=0;
	for(i=0;i<len;i++)//遍历a 开始查找当前i位置到结束是否是b的前缀 
	{
		k=i;j=0;
		while(a[k]==b[j])
		{
			k++;j++;
			if(k==len)
			{
				f=1;
				break;
			}	
		}
		if(f==1)
			break;
	}
	len2=strlen(b);
	for(k=0;k<i;k++)//从i开始 与b前面相同 
		c[k]=a[k];
	for(j=0;j<len2;k++,j++)
		c[k]=b[j]; 
	
	for(i=0;i<k;i++)
		printf("%c",c[i]);
	printf("\n");
}

int main()
{
	char a[]={"12345678"};
	char b[]={"56789322"};
	printf("串1:%s 串2:%s\n",a,b);
	printf("合并后的串为:"); 
	myStrcpy(a,b);
	
	char c[]={"fgaercxore"};
	char d[]={"ekkkkkkkfff"};
	printf("串1:%s 串2:%s\n",c,d);
	printf("合并后的串为:"); 
	myStrcpy(c,d);
	return 0;
} 

抱歉!评论已关闭.