数据结构-串-取子串

Description
实现函数SubString (&Sub, S, pos, len)求子串。(说明:不得使用任何库函数,字符串的存储结构为堆分配存储)
不用考虑无效的pos和len的情况。

Input

输入为三项:分别为一个字符串以及要取子串的开始位置以及长度。

Output
输出为子串
 
Sample Input
This is a program!
6
2
 
Sample Output
is

#include<stdio.h>
#include<bits/stdc++.h>
#include<iostream>
#define Max_str 255
using namespace std;

typedef struct{//存储结构
    char *ch;
    int length;
}Hstring;

void initString(Hstring &S){//初始化字符串
	S.ch=new char[Max_str];
    S.length=Max_str;
    for(int i=0;i<S.length;i++){
        S.ch[i]='\0';
    }
}
void Strass(Hstring &S,char *chars){//生成字符串
    int i=0;
    char *c;
    for(i=0,c=chars;*c;i++,c++);//求长度
    for(int j=0;j<i;j++){
        S.ch[j]=chars[j];
    }
    S.length=i;
}
void Substring(Hstring &Sub,Hstring S,int pos,int len){//从第pos个位置取长度为len的字符串sub
    if(Sub.ch) free(Sub.ch);
    Sub.ch=(char *)malloc(len*sizeof(char));//分配空间
    int j=0;
    for(int i=pos-1;i<pos+len-1;i++){
        Sub.ch[j]=S.ch[i];
        j++;
    }
    Sub.length=len;
}

void Strprint(Hstring S){//输出字符串
    for(int i=0;i<S.length;i++){
        cout<<S.ch[i];
    }
}

int main(){
    Hstring S,Sub;
    initString(S);
    initString(Sub);
    int len,pos;
    char chars[Max_str];
    gets(chars);//输入(不吃空格)
    Strass(S,chars);
    cin>>pos>>len;
    Substring(Sub,S,pos,len);
    Strprint(Sub);
    return 0;
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值