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日

悬赏问题

  • ¥15 对于squad数据集的基于bert模型的微调
  • ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
  • ¥20 steam下载游戏占用内存
  • ¥15 CST保存项目时失败
  • ¥15 树莓派5怎么用camera module 3啊
  • ¥20 java在应用程序里获取不到扬声器设备
  • ¥15 echarts动画效果的问题,请帮我添加一个动画。不要机器人回答。
  • ¥15 Attention is all you need 的代码运行
  • ¥15 一个服务器已经有一个系统了如果用usb再装一个系统,原来的系统会被覆盖掉吗
  • ¥15 使用esm_msa1_t12_100M_UR50S蛋白质语言模型进行零样本预测时,终端显示出了sequence handled的进度条,但是并不出结果就自动终止回到命令提示行了是怎么回事: