/* 题目61:编写一个名为removestring的函数,该函数用于从一个字符串中删除一定量的字符。 该函数接受三个参数: 第1参数代表源字符串 第2参数代表需要删除字符的起始位置(位置从0开始) 第3参数代表需要删除的字符个数。 eg:字符串"abcd12345efg" removestring(text, 4, 5); 则会删除该字符数组中的字符串wrong以及后面的空格。遗留内容则是字符串abcdefg"。 */ #include<stdio.h> #include<stdlib.h> #include<string.h> int removestring(char *pstr/*in*/, int begin, int num,char **pout/*out*/){ int ERRO_MSG = 0; if (pstr == NULL || pout==NULL) { ERRO_MSG = 1; printf("pstr == NULL || pout==NULL 传入参数不可以为空 erro msg:%d\n", ERRO_MSG); return ERRO_MSG; } //定义临时变量接受参数 char *pin = pstr; //分配返回内存 char *res = (char *)malloc(sizeof(char)* 30); int index = 0,numx=0; while (*pin != ‘\0‘){ if (index >= begin&&index <(begin+num)) { pin++; index++; continue; } res[numx] = *pin; //指针后移一位 pin++; index++; numx++; } res[numx] = ‘\0‘; *pout = res; return ERRO_MSG; } int freestring(char **pin/*in*/){ int ERRO_MSG = 0; if (pin==NULL) { ERRO_MSG = 1; printf("pin==NULL 传入参数不可以为空 erro msg:%d\n", ERRO_MSG); return ERRO_MSG; } if (*pin!=NULL) { free(*pin); *pin = NULL; } return ERRO_MSG; } void main(){ char str[30]="abcd12345efg"; int ret = 0; //接收返回字符串 char *str2 = NULL; ret = removestring(str, 0, 5, &str2); if (ret!=0) { printf("删除指定字符失败!"); } //打印处理之后的字符 printf(str2); printf("\n"); //释放内存 freestring(&str2); system("pause"); }
时间: 2024-11-01 13:29:06