顺序串的相关操作

#include <stdio.h>
#define MaxSize 250
typedef struct{
    char ch[MaxSize];
    int length;
}String;
// 初始化
void Init(String &s){
    s.length = 0;
}
// 赋值操作
void StrAssign(String &s,char c){
  s.length++;
  s.ch[s.length] = c;
}
/**
 * @brief  复制操作
 * @param  &o: 目的字符串
 * @param  n: 被复制的字符串
 */
void StrCopy(String &o,String n){
    for(int i=1;i <= n.length;i++){
        StrAssign(o,n.ch[i]);
    }
}
// 判空
bool StrEmpty(String s){
    return s.length == 0;
}
// 串长 
int StrLength(String s){
    return s.length;
}
/**
 * @brief  连接两个字符串
 * @param  &N: 被返回的字符串
 * @param  s1: 字符串1
 * @param  s2: 字符串2
 */
void ConCat(String &N,String s1,String s2){
    for(int i = 1; i <= s1.length;i++){
        StrAssign(N,s1.ch[i]);
    }
    for(int i = 1; i <= s2.length;i++){
        StrAssign(N,s2.ch[i]);
    }
}
void PrintfStr(String s){
    for(int i=1;i<=s.length;i++){
        printf("%c",s.ch[i]);
    }
    printf("\n");
}
// 测试
int main(){
    String s;
    String s2;
    Init(s);
    Init(s2);
    //s  ->  ILoveYou!
    StrAssign(s,'I');
    StrAssign(s,'L');
    StrAssign(s,'o');
    StrAssign(s,'v');
    StrAssign(s,'e');
    StrAssign(s,'Y');
    StrAssign(s,'o');
    StrAssign(s,'u');
    StrAssign(s,'!');
    //PrintfStr(s);

    //s1 -> YXK
    StrAssign(s2,'Y');
    StrAssign(s2,'X');
    StrAssign(s2,'K');
    //PrintfStr(s2);

    String s3;
    Init(s3);
    // 测试复制
    StrCopy(s3,s2);
    //PrintfStr(s3);
    // 测试ConCat
    String s4;
    Init(s4);
    ConCat(s4,s,s2);
    PrintfStr(s4);
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值