C语言 百炼成钢25

/*
题目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-08-27 00:09:54

C语言 百炼成钢25的相关文章

寒城攻略:Listo 教你 25 天学会 Swift 语言 - 25 Listo&#39;s Conclusion

import Foundation //*********************************************************************************************** //1.Listo's Conclusion(Listo 的编写总结) //_______________________________________________________________________________________________

C语言学习(25)

1 #include<stdio.h> 2 int max(int x,int y){ 3 if(x>y){ 4 return x; 5 } 6 return y; 7 } 8 9 int min(int x,int y){ 10 if(x<y){ 11 return x; 12 } 13 return y; 14 } 15 16 int sum(int x,int y){ 17 return (x+y); 18 } 19 20 int f(int x,int y,int (*p)

3.go语言的25个关键字

25个关键字 关键字不能用于自定义名字,只能在特定语法结构中使用 package import go goto defer return var const type func map chan interface struct range select for continue break switch case default fallthrough if else 原文地址:http://blog.51cto.com/11140372/2338397

C语言 百炼成钢21

//题目57:编写一个业务函数,实现字符串(前后各有三个空格,单词前后也均有空格) //" i am student, you are teacher " , //各个单词首字符大写,结果如下" i am student, you are teacher " , //要求1:实现所有接口 70 //要求2:写出测试程序 30 #include<stdio.h> #include<stdlib.h> #include<string.h&g

C语言 百炼成钢22

/* 题目58: 编写一个业务函数,实现按行读取文件.把内容按照第三种内存模型打包数据传出,把行数通过函数参数传出. 函数原型有两个,任意选择其一 要求1:请自己任意选择一个接口(函数),并实现功能:70分 要求2:编写测试用例.30分 要求3:自己编写内存释放函数 */ #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #include<string.h> //按行读取文件 int

C语言 百炼成钢27

/* 题目63:编写C++程序完成以下功能: (1)声明一个纯虚函数类Shape(形状),其中包含来计算面积.计算周长的方法: (2)从Shape派生两个类矩形和圆形: (3)从矩形派生正方形: (4)分别实现派生类构造函数.析构函数和其他方法: (5)创建派生类的对象,观察构造函数.析构函数调用次序: (6)利用抽象类做函数参数(基类指针指向子类对象,多态特性),计算不同对象的面积和周长. */ #define _CRT_SECURE_NO_WARNINGS #include<iostream

C语言 百炼成钢17

//题目49:老师将糖果分成若干份,让学生按任意次序领取,第一个领取的,得到1份加上剩余糖果的1/10, //第二个领取的,得到2份加上剩余糖果的1/10,第三个领取的,得到3份加上剩余糖果的1/10,以此类推, //求共有多少个学生,多少份糖果 #include<stdio.h> #include<stdlib.h> //思路:该题的要求是求一个糖果的数量,这个数量必须保证每个学生领取到的糖果都是整份数,并不要求所有学生分的糖果分数一样 //根据多定义变量,简化运算难度规则,定义

C语言 百炼成钢16

//题目46:海滩上有一堆桃子,五只猴子来分.第一只猴子把这堆桃子凭据分为五份,多了一个,这只 //猴子把多的一个扔入海中,拿走了一份.第二只猴子把剩下的桃子又平均分成五份,又多了 //一个,它同样把多的一个扔入海中,拿走了一份,第三.第四.第五只猴子都是这样做的, //问海滩上原来最少有多少个桃子? #include<stdio.h> #include<stdlib.h> //分析:最少有多少个桃子,说明是满足条件的最小数:假设有X个桃子,第一个猴子的桃子数量是(X-1)/5,

C语言 百炼成钢11

//题目31:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续 //判断第二个字母. #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #include<math.h> //分析:通过输入的字母判定星期几,可以使用if()else void main(){ char str[7] = { 0 }; scanf("%s",str); switc