m0_61733427 2021-11-01 16:43 采纳率: 100%
浏览 391
已结题

编写一个程序,在字符串中删除指定位置pos开始长度为len的字串

输入形式

第一行输入一个字符串,第二行开始位置pos和子串长度len。

【输出形式】

删除成功则输出删除子串后的字符串,删除不成功则输出error。
【样例输入1】

I am a boy!

2 3

【样例输出1】

I a boy!

【样例输入2】

I am a boy!

20 3

【样例输出2】

error


#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#include<string.h>

#define INITSIZE 1000
#define OK 1
#define ERROR 0

typedef struct{
  char* data;
  int length,stringsize;
}SqString;

//初始化
int InitString(SqString *S)
{
  S->data=(char *)malloc(INITSIZE * sizeof(char));
    if(!S->data)
        return ERROR;
    S->length=0;
    S->stringsize=INITSIZE;
    return OK;


}
//串赋值
int StrAssign(SqString *S,char *str){
  int i=0;
    while(*str)
        S->data[i++]=*str++;
    S->data[i]='\0';
    S->length=i;
    return OK;
}

//在串s中删除从第pos字符开始长度为len的字串
int DelSubPosition(SqString *s,int pos,int Len){
   













}

int main(){
    SqString s;
    char str[1000]={""};
    int pos,len;
    InitString(&s);
    gets(str);
    StrAssign(&s,str);
    scanf("%d %d",&pos,&len);
    if(DelSubPosition(&s,pos,len))
        puts(s.data);
    else
        printf("error\n");
    return 0;
}

  • 写回答

1条回答 默认 最新

  • bekote 2021-11-01 17:20
    关注
    
    //在串s中删除从第pos字符开始长度为len的字串
    int DelSubPosition(SqString *s,int pos,int Len){
        int i = pos + Len;
        int strLen = s->length;
        if(i >= strLen){
            return 0;
        }
        while(i < strLen){
            s->data[i-Len]=s->data[i];
            i+=1;
        }
        s->data[i-Len] = '\0';
        s->length -= Len;
        return 1;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 11月9日
  • 已采纳回答 11月1日
  • 创建了问题 11月1日

悬赏问题

  • ¥170 如图所示配置eNSP
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥15 键盘指令混乱情况下的启动盘系统重装