5.14数据结构-串的输入,对比,复制,匹配

#include<stdio.h>
#define size 100

typedef struct node{
    char c1[size];
    int length=0;
}sq;

int leng1(sq&l){
    int i=0;
    while(l.c1[i]!='\0'){
        l.length++;
        i++;
    }
    return l.length;
}                      //求c1长度 

int leng2(char c[]){
     int b=0,i=0;
    while(c[i]!='\0'){
        i++;
        b++;
    } 
    return b;                      //求c2长度 
}

main(){
    sq l; 
    int num1,num2,num3=0,num4,a=0,i,j;
    char c2[size],c3[size],c4[size];
    printf("请输入存入c1的字符串:");
    gets(l.c1) ;
    printf("请输入存入c2的字符串:");
    gets(c2) ;
    printf("请输入要与c1对比的子串:");
    gets(c4);
    num1=leng1(l);
    printf("c1长度为:%d\n",num1);
    num2=leng2(c2);
    printf("c2长度为:%d\n",num2);
    
    if(num1==num2){
        for(i=0;i<num1;i++){
            if(l.c1[i]!=c2[i]){
            a=l.c1[i]>c2[i]?1:-1;
            printf("%d(1表示c1大,-1表示c2大)\n",a);
            } 
        }        
    }
    if(a==0||num1!=num2) printf("两个串相等\n");   //判断相等 
    
    for(i=0;i<num2;i++){
        l.c1[l.length] = c2[i];
        l.length++;
    }                           //将b添加到a的后面
    
    printf("将c2中数据插入到c1后则有数据:\n");
    for(i=0;i<num1+num2;i++){
        printf("%c",l.c1[i]);
    }
    printf("\n");
    
    printf("请输入要复制开始的位置(值要小于%d)\n",l.length);//将 c1从I个位置开始的j个数据复制给c3
    scanf("%d",&i);
    printf("请输入复制结束的位置:(值要小于%d)\n",l.length);
    scanf("%d",&j);
    int k=0; 
    if(i<0||i>l.length||j<i||j>l.length) printf("错误!"); 
    else{
        for(i;i<=j;i++){        
        c3[k]=l.c1[i-1];
        num3++; k++;  
        }   
    }
    printf("c3中有数据:"); 
    for(i=0;i<num3;i++){
        printf("%c",c3[i]);
    }
         
    printf("\n");
    printf("c3的数据个数为:%d",num3);
    printf("\n"); 
    
    num4=leng2(c4);                                   
    printf("c4的数据个数为:%d\n",num4);          //查找子串开始的位置 
    for(i=0;i<num1;i++){
        for(k=i,j=0;j<num1;k++,j++){
            if(l.c1[k]!=c4[j])break;
        } 
        if(j==num4) {
            printf("从c1的第%d个位置到第%d位",i+1,i+1+num4); 
        }        
    } 
    
    
}

 

转载于:https://www.cnblogs.com/huangjiaxin/p/10859846.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值