• 字符串的基本操作


      1 #include<stdio.h>
      2 #define maxsize 100
      3 typedef struct{
      4     char ch[maxsize];
      5     int n;
      6 }SeqString;
      7 
      8 void Assign(SeqString &L,char ch1[]){           //  数组赋值给字符串
      9     int i=0;
     10     while(ch1[i]!=''){
     11         L.ch[i]=ch1[i];
     12         i++;
     13     }
     14     L.n=i;
     15 }
     16 
     17 void DisqStr(SeqString &L){                     //  输出串
     18     printf("输出的的字符串为:");
     19     for(int i=0;i<L.n;i++){
     20         printf("%c",L.ch[i]);
     21     }
     22     printf("
    ");
     23 }
     24 
     25 void Strlength(SeqString &L){                    //求串长
     26     printf("字符串L.ch的长度为:%d
    ",L.n);
     27 }
     28 
     29 int  concat(SeqString &L,char ch2[]){            //串连接
     30     int i=0,j;
     31     while(ch2[i]!=''){
     32         i++;
     33     }
     34     for(j=0;j<i;j++){
     35         L.ch[j+L.n]=ch2[j];
     36     }
     37     printf("将串ch2连接到L.ch后面,得到的新的字符串为:
    %s
    ",L.ch);
     38     return i;
     39 }
     40 
     41 void StrEqual(SeqString &L,char ch2[],int i){          //判断串相等
     42     int k=0,a;
     43     a=L.n>=i?L.n:i;
     44     printf("判断L.ch和ch2的字符串是否相等!(L.ch>ch2->1,L.ch=ch2->0,L.ch<ch2->-1)
    结果为:");
     45     for(int j=0;j<a;j++){
     46         if(L.ch[j]==ch2[j]){
     47             printf("0
    ");
     48             break; 
     49         }else if(L.ch[j]>ch2[j]){
     50             printf("1
    ");
     51             break; 
     52         }else {
     53             printf("-1
    ");
     54             break; 
     55         }
     56     }
     57 }
     58 
     59 void InsStr(SeqString &L,int n,int m){           //串的插入
     60     int i;
     61     printf("L.ch字符串第%d个位置开始的%d个字符为:
    ",n,m);
     62     for(i=n-1;i<n+m-1;i++){               
     63         printf("%c",L.ch[i]);
     64     }
     65     printf("
    ");
     66 }
     67 
     68 void DelStr(SeqString &L,int n,int m){                //删除串
     69     int i;
     70     L.n=L.n-m;
     71     for(i=n;i<=L.n;i++){
     72         L.ch[i-1]=L.ch[i+m-1];
     73     }
     74     printf("删除第%d个位置的%d个字符之后组成新的字符串为:
    ",n,m);
     75     for(i=0;i<L.n;i++){
     76         printf("%c",L.ch[i]);
     77     }
     78 }
     79 
     80 void InStr(SeqString &L,int n,int m,char ch2[]){         //插入串
     81     int a[L.n-n+1];
     82     for(int i=0;i<L.n-n+1;i++){
     83         a[i]=L.ch[i+n-1];
     84     }
     85     for(int i=0;i<m;i++){
     86         L.ch[i+n-1]=ch2[i];
     87     }
     88     for(int i=0;i<L.n-n+1;i++){
     89         L.ch[n+m-1+i]=a[i];
     90     }
     91     L.n=L.n+m;
     92     printf("将ch2插在L.ch的第%d个位置之后构成的字符串为:
    ",n);
     93     for(int i=0;i<L.n;i++){
     94         printf("%c",L.ch[i]);
     95     }
     96     printf("
    ");
     97 }
     98 
     99 void Find (SeqString &L,char ch3[]){
    100     int n=0,i,j,k;
    101     while(ch3[n]!=''){
    102         n++ ;
    103     }
    104     for(i=0;i<L.n-n;i++){
    105         for(j=0,k=i;j<n;j++,k++){
    106             if(ch3[j]!=L.ch[k]){
    107                 break;
    108             } }
    109         if(j==n){
    110             printf("ch3字符串是从L.ch字符串中的第%d位置到第%d的位置
    ",i+1,i+n);
    111         }
    112     }
    113     return;
    114 }
    115 
    116 int main(){
    117     int i,n,m,a,b,k;
    118     char ch1[100],ch2[100],ch3[4]="efg";
    119     SeqString L;
    120     printf("请输入一个字符串:
    ");
    121     gets(ch1);
    122     Assign(L,ch1);
    123     DisqStr(L);
    124     Strlength(L);
    125     printf("请输入一个字符串ch2:
    ");
    126     gets(ch2);
    127     i=concat(L,ch2);
    128     StrEqual(L,ch2,i);
    129     printf("请问要查找第几个位置开始的几个字符:
    ");
    130     scanf("%d %d",&n,&m);
    131     InsStr(L,n,m);
    132     printf("请问要在%s第几个位置插入字符串ch2:
    ",ch1);
    133     scanf("%d",&k);
    134     InStr(L,k,i,ch2);
    135     printf("查找字符串ch3在L.ch字符串中的位置:
    ");
    136     Find(L,ch3);
    137     printf("请问要删除第几个位置开始的几个字符:
    ");
    138     scanf("%d %d",&a,&b);
    139     DelStr(L,a,b);
    140     return 0;
    141 }
  • 相关阅读:
    【Prince2科普】Prince2七大主题之概论
    浅谈PRINCE2和PMP体系架构有何区别?
    Prince2是怎么考试的?
    Reporting Service服务SharePoint集成模式安装配置(3、4、安装sharepoint 2010必备组件及产品)
    Reporting Service服务SharePoint集成模式安装配置(1、虚拟机+ 2、AD域环境配置)
    DB2 添加license
    db2中临时表在存储过程中的使用
    DB2 函数快速构造测试数据
    db2 中 SQL判断物理表是否存在、修改表名
    DB2触发器简单例子
  • 原文地址:https://www.cnblogs.com/liuxun1031/p/10898693.html
Copyright © 2020-2023  润新知