C语言 题目 1688: 数据结构-字符串插入

看下图的代码块理清思路

题目描述

将一个字符串插入到另一个字符串当中。算法描述如下:

图:字符串插入算法

输入格式

输入只有一行,两个字符串(stra,strb)和一个整数 i。字符串仅由英文大小写字母或数字组成。输入的字符串长度不超过127。

输出格式

样例输入

strng i 4

样例输出

string
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct HString{
	char* st;
	int length;
}*hstring,HSTRING;
void insert(hstring,HSTRING,int);
void show(hstring);
char* moc();//分配内存
int main(){
	hstring s;
	HSTRING t;
	s=(hstring)malloc(sizeof(HSTRING));
	int i;
	s->st=moc(); 
	t.st=moc();
	while(~scanf("%s",s->st)){
		getchar();
		scanf("%s",t.st);
		getchar();
		scanf("%d",&i);
		getchar();
		s->length=strlen(s->st);
		t.length=strlen(t.st);
		insert(s,t,i);
	}
}
void insert(hstring s,HSTRING t,int i){
	if(i<1||i>s->length+1)
	return;
	if(t.length){
		s->st=(char*)realloc(s->st,(s->length+t.length+1)*sizeof(char));
		for(int j=s->length-1;j>=i-1;j--){
			s->st[j+t.length]=s->st[j];
		}
		for(int k=0;k<t.length;k++){
			s->st[i-1+k]=t.st[k];
		}
		s->length+=t.length+1;
		s->st[s->length]='\0';
	}
	show(s);
}
void show(hstring s){
	printf("%s\n",s->st);
}
char* moc(){
	return (char*)malloc(128*sizeof(char));
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值