codeup——字符串连接

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

输出连接后的字符串。

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

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

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

#include<bits/stdc++.h>
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 <stdio.h> 
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’

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值