codeup——字符串连接

**题目描述
不借用任何字符串库函数实现无冗余地接受两个字符串,然后把它们无冗余的连接起来。
输入
每一行包括两个字符串,长度不超过100。
输出
可能有多组测试数据,对于每组数据,
不借用任何字符串库函数实现无冗余地接受两个字符串,然后把它们无冗余的连接起来

输出连接后的字符串。

样例输入
abc def
样例输出
abcdef
**

无冗余的意思就是动态开辟数组,用到了malloc和realloc函数

//malloc 动态申请一个内存空间 realloc扩大内存空间并且其他内容不变
//字符串末尾加一个’\0’

#include
using namespace std;
int main()
{
	int i=1,j=1;
	char a;
	char *p1 = (char*)malloc(sizeof(char));
	char *p2 = (char*)malloc(sizeof(char));
	while((a = getchar())!=' ')
	{
		p1 = (char*)realloc(p1,sizeof(char)*i);
		*(p1+i-1) = a;
		i++;
	}
	p1 = (char*)realloc(p1,sizeof(char)*i);
	*(p1+i-1) = '\0';
	
	while((a = getchar()) != '\n')
	{
		p2 = (char*)realloc(p2,sizeof(char)*j);
		*(p2+j-1) = a;
		j++;
	}
	p2 = (char*)realloc(p2,sizeof(char)*j);
	*(p2+j-1) = '\0';
	
	p1 = (char*)realloc(p1,sizeof(char)*(i+j-1));
	int cnt = 0;
	for(int k = 0;k<j;k++)
	{
		p1[i-1+k] = p2[k];
	}
	printf("%s\n",p1);
	return 0;
} 


但是不知道为什么时间超限,

ok,暴力

#include  
int main(){
	char a[210],b[110];
	while(scanf("%s%s",a,b)!=EOF) {
		int i;
		for(i=0;a[i]!='\0';i++);
		for(int j=0;b[j]!='\0';j++){
			a[i++]=b[j];
		}
		a[i]='\0';
		puts(a);
	}
	return 0;
}

多快好省!

本题旨在突出不用任何库函数,包括strlen(),以及无冗余的存储,利用基本的C语言的指针以及字符串存储特性可以解决。但是为什么时间超限了==(暴力真好用)
注意读入字符串需要在末尾+’\0’

你可能感兴趣的:(codeup——字符串连接)