栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

c语言串--顺序存储

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

c语言串--顺序存储

3.1 串--顺序存储

  1. main.c
//
//  main.c
//  11_StackString
//
//  Created by ls on 2022/5/24.
//  Copyright © 2022 LSC001. All rights reserved.
//

#include "SString.h"

int main() {
    SString S;
    InitString(S);
    char *str = "ABC";
    StrAssign(S,str);
    
    SString T;
    InitString(T);
    StrAssign(T,"12");
    StrInsert(S,4,T);
    PrintString(S);
//
//    SString V;
//    InitString(V);
//    StrAssign(V,"++");
//
//    PrintString(S);
//    PrintString(T);
//    PrintString(V);

//    StrReplace(S,T,V);
    
//    PrintString(S);
    
//    printf("%dn",StrIndex(S,T,3));
//    PrintString(S);
//    StrDelete(S,4,3);
//    PrintString(S);
    
    
//    printf("%dn",StrCompare(S,T));
//    SString T;
//    StrCopy(T,S);
//    PrintString(S);
//    PrintString(T);
//    printf("%dn",StrEmpty(S));
//    printf("%dn",StrLength(S));
//    StrClear(S);
//    PrintString(S);
//    SString A;
//    StrConcat(A,S,T);
//    PrintString(A);
//    PrintString(T);
//    PrintString(S);
//    StrClear(S);
//    PrintString(S);
//    PrintString(S);
//    SString T = "12";
    
    
    
    

    //int select=1;
    
//    while(select)
//    {
//        printf("***********************************************n");
//        printf("* [1]  StrAssign            [2]  StrCopy      *n");
//        printf("* [3]  StrEmpty             [4]  StrCompare   *n");
//        printf("* [5]  StrLength            [6]  StrConcat    *n");
//        printf("* [7]  SubString            [8]  StrIndex     *n");
//        printf("* [9]  StrReplace           [10] StrInsert    *n");
//        printf("* [11] StrDelete            [11] StrClear     *n");
//        printf("* [11] PrintString                            *n");
//        printf("***********************************************n");
//        printf("请选择:> ");
//        scanf("%d",&select);
//        if(0 == select)
//            break;
    


    //void StrDelete(SString S,int pos,int len);             // 11 从pos删除len的字符。
    //void StrClear(SString S);                              // 12
    //void PrintString(SString S);                           // 13
    
    
    
//
//        switch (select)
//        {
//            case 1:
//
//                break;
//            case 2:
//                pop_back(&mystack,&value);
//                show_Stack(&mystack);
//                break;
//            case 3:
//                show_Stack(&mystack);
//                break;
//            case 4:
//                printf("Empty: %ldn",isEmpty(mystack));
//                break;
//            case 5:
//                get_top(mystack);
//                break;
//            case 6:
//                printf("length: %ldn",length(mystack));
//                break;
//            case 7:
//                clear0(&mystack);
//                break;
//            case 8:
//                destroy(&mystack);
//                break;
//            default:
//                printf("输入错误!");
//                break;
//        }
//    }
    //destroy(&mystack);
    printf("Hello, World!n");

    return 0;
}

  1. SString.h
//
//  SString.h
//  11_StackString
//
//  Created by ls on 2022/5/24.
//  Copyright © 2022 LSC001. All rights reserved.
//

#ifndef SString_h
#define SString_h

#include 
#include 
#include 
#include 

// 1
#define MAXSTRLEN 30
#define u_char unsigned char

typedef u_char SString[MAXSTRLEN+1];

// 2
void InitString(SString S);
void StrAssign(SString S,char *str);                   // 1  赋值,
void StrCopy(SString S,SString T);                     // 2  复制
bool StrEmpty(SString S);                              // 3  判断字符串是否为空
int  StrCompare(SString S,SString T);                  // 4  比较两个字符串的大小
int  StrLength(SString S);                             // 5  字符串长度
void StrConcat(SString T,SString s1,SString s2);       // 6  T=s1+s2
void SubString(SString S,SString sub,int pos,int len); // 7  求子串,在指定位置pos上,截取了len,赋值给sub。
int  StrIndex(SString S,SString T,int pos);            // 8  从S的pos匹配T,找出T首次出现的位置。返回相应下标或-1.
void StrReplace(SString S,SString T,SString V);        // 9  替换。用V替换S中所有与T相等不重叠的
void StrInsert(SString S,int pos,SString T);           // 10 在S的pos前插入T。
void StrDelete(SString S,int pos,int len);             // 11 从pos删除len的字符。
void StrClear(SString S);                              // 12 清除
void PrintString(SString S);                           // 13 打印

#endif 
  1. SString.c
//
//  SString.c
//  11_StackString
//
//  Created by ls on 2022/5/24.
//  Copyright © 2022 LSC001. All rights reserved.
//

#include "SString.h"

void InitString(SString S)
{
    S[0]='';
}
void StrAssign(SString S,char *str)                   // 1 把str放在T中。
{
    int i = 0;
    while(str[i] != '')
    {
        S[i] = str[i];
        i++;
    }
    S[i] = '';
}
void StrCopy(SString S,SString T)                     // 2
{
    int i = 0;
    while(T[i] != '')
    {
        S[i] = T[i];
        i++;
    }
    S[i] = '';
}
bool StrEmpty(SString S)                              // 3
{
    return S[0]=='';
}
int  StrCompare(SString S,SString T)                  // 4
{
    int tmp = 0;
    while(*S != '' || *T != '' )
    {
        tmp = *S - *T;
        if(tmp != 0) break;
        ++S;
        ++T;
    }
    if(tmp>0)tmp = 1;
    else if(tmp<0)tmp = -1;
    return tmp;
}

int  StrLength(SString S)                             // 5
{
    int i = 0;
    while (*S!='') {
        ++S;
        ++i;
    }
    return i;
}
void StrConcat(SString T,SString s1,SString s2)       // 6     T=s1+s2
{
    int len_s1 = StrLength(s1);
    int len_s2 = StrLength(s2);
    if(len_s1 + len_s2 <= MAXSTRLEN)
    {
        int i=0,j = 0 ;
        while (s1[i] !='') {
            T[i] = s1[i];
            ++i;
        }
        while (s2[j] !='') {
            T[i+j] = s2[j];
            ++j;
        }
        T[j+i] = '';
    }
    else if(len_s1 <= MAXSTRLEN)
    {
        int i=0,j = 0 ;
        while (s1[i] !='') {
            T[i] = s1[i];
            ++i;
        }
        while (jStrLength(S) || len<0 || len> StrLength(S)) return;
    int i = 0;
    while (len>0) {
        sub[i]=S[pos+i-1];
        ++i;
        --len;
    }
    sub[i]='';
}
int StrIndex(SString S,SString T,int pos)            // 8
{
    int len_s = StrLength(S);
    int len_t = StrLength(T);
    if(pos<0 || pos>len_s)return -10000;
    int i = pos-1,j = 0;
    while (i < len_s && j < len_t) {
        if(S[i] == T[j]){++i; ++j;}
        else{i=i-j+1;j=0;}
    }
    if(j>=len_t)return i-len_t;
    else return 0;
}
void StrReplace(SString S,SString T,SString V)        // 9
{
    int len_s = StrLength(S);
    int len_t = StrLength(T);
    int len_v = StrLength(V);
    int pos=1;
    while (pos-1 MAXSTRLEN || pos<0) return;
    int i=len_s-1;
    while (i>=pos-1) {
        S[i+len_t]=S[i];
        i--;
    }
    int j=0;
    while (T[j] != 0) {
        S[pos-1+j] = T[j];
        ++j;
        S[len_s + len_t ]='';
    }
}
void StrDelete(SString S,int pos,int len)             // 11
{
    if(pos+len>StrLength(S)) return;
    int i = pos+len-1;
    while (S[i]!= '') {
        S[i-len]=S[i];
        ++i;
    }
    S[i-len]='';
}
void StrClear(SString S)                              // 12
{
    S[0]='';
}
void PrintString(SString S)                              // 13
{
    int i=0;
    while (S[i]!='') {
        printf("%c ",S[i]);
        i++;
    }
    printf("n");
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/942779.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号