C语言:编写从一个字符串中提取一个子字符串的函数my_substr

原创 2016年05月30日 17:13:32
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>

char* my_substr(char* dest, const char* src, size_t pos, size_t destlen)
{
    assert(src);
    size_t srclen = strlen(src);
    assert(pos <= srclen);
    char* start = src;
    char* p = dest;
    
    while (pos)
    {
        start++;
        pos--;
    }
    
    if (destlen > srclen)  //当截取的部分字符串长度小于destlen时,真正字符串长度就是destlen  
    {
        destlen = srclen;
    }
    
    while (destlen)
    {
        *dest++ = *start++; 
        destlen--;
    }
    
    *dest = '\0';    //最后要用\0结束字符串标志
    return p;
}

int main()
{
    char arr1[] = "hello world!";
    char arr2[10];
    char* ret = my_substr(arr2, arr1, 2, 5);
    printf("%s", ret);
    system("pause");
    return 0;
}

注意两点:

(1)要将dest首地址保存起来,最后再返回其地址!!!

保存:

char* p = dest;

返回:

 return p;

否则,若不保存地址,则dest一直在变化,最后变成了'\0',则不输出


(2)src原串不发生变化,则可用const修饰。防止其发生改变!


版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

C语言 编写一个函数,它从一个字符串中提取一个子字符串

编写一个函数,它从一个字符串中提取一个子字符串。函数原型如下: int substr(char dst[], char src[],intstart, int len)  { } 目标:      ...

【c语言】编写一个函数,它从一个字符串中提取一个子字符串

/*编写一个函数,它从一个字符串中提取一个子字符串。函数原型如下: int substr(char dst[], char src[],int start, int len) {} 目标是:从src...

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

C语言实现 从一个字符串中提取一个子字符串

例如: 编写一个函数,它从一个字符串中提取一个子字符串。函数原型如下: int substr(char dst[], char src[],int start, int len) {} 目标是:从sr...

C语言,从字符串中提取一个字符串,int substr(char dst[], char src[],int start,int len)目标是:从src数组的起始位置开始向后偏移star

方法一:define _CRT_SECURE_NO_WARNINGS 1include include includedefine _CRT_SECURE_NO_WARNINGSinclude inc...

用C语言编写函数计算子字符串substr在主字符串mainstr中的索引值

在大小写敏感的前提下,用C语言编写函数计算子字符串substr在主字符串mainstr中的索引值。 如果substr完全包含在mainstr中,请计算出索引值。否则,返回-1. 具体代码如下: f...

【c语言】编写一个函数计算字符串长度

方法一:数组方式 代码如下: #include #include int my_strlen(char const *str) { int count=0; assert(str); //断言,...
  • i_fcy
  • i_fcy
  • 2015-05-21 18:44
  • 1506

【c语言】为下面的函数原型编写函数定义,这个字符串参数必须包含一个或者多个数字,函数应该把这些数字字符转换为整数并返回这个整数。

/*为下面的函数原型编写函数定义: int ascii_to_integer(char *str); 这个字符串参数必须包含一个或者多个数字,函数应该把这些数字字符转换为整数并返回这个整数。 如果字符...

【c语言】编写一个函数,将一个数字字符串转换成这个字符串对应的数字(包括正浮点数、负浮点数)

/*编写一个函数,将一个数字字符串转换成这个字符串对应的数字(包括正浮点数、负浮点数) 例如:"12.34" 返回12.34 "-123.34" 返回-123.34 函数原型:double m...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)