C语言实现字符串分割,实现Java语言中substring()函数

我们知道Java语言中有字符串分割函数substring()使用起来非常方便,先简要介绍一下这个函数的功能。

在java中 substring()方法有两种用法,

  • beginIndex -- 起始索引(包括)

  • endIndex -- 结束索引(不包括)

第一种:

public String substring(int beginIndex)

返回一个新的字符串,它是此字符串的一个子字符串。该子字符串从指定索引处的字符开始,直到此字符串末尾。

第二种:

public String substring(int beginIndex, int endIndex)

返回一个新字符串,它是此字符串的一个子字符串。该子字符串从指定的 beginIndex 处开始,直到索引 endIndex - 1 处的字符。因此,该子字符串的长度为 endIndex-beginIndex。

而我们今天要用C语言实现类似功能,与Java的第二种方法类似。

函数原型:

char* substring(char* ch, int pos, int length)
{
    char* p = ch;//定义一个字符指针,指向传递进来的ch地址。  
    char* subch = (char*)calloc(sizeof(char), length + 1);//通过calloc来分配一个length长度的字符数组,返回的是字符指针。  
    int i;  
    p = p + pos;//是p指针指向pos位置。  
    for (i = 0; i < length; i++)
    {
        subch[i] = *(p++);//循环遍历赋值数组。  
    }
    subch[length] = '\0';//加上字符串结束符。  
    return subch;       //返回分配的字符数组地址。  
}

我们写一个小代码测试一下:

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

char* substring(char* ch, int pos, int length)
{
    char* p = ch;//定义一个字符指针,指向传递进来的ch地址。  
    char* subch = (char*)calloc(sizeof(char), length + 1);//通过calloc来分配一个length长度的字符数组,返回的是字符指针。  
    int i;
    p = p + pos;//是p指针指向pos位置。  
    for (i = 0; i < length; i++)
    {
        subch[i] = *(p++);//循环遍历赋值数组。  
    }
    subch[length] = '\0';//加上字符串结束符。  
    return subch;       //返回分配的字符数组地址。  
}

char* G;//G1
char* X;//x
char* Ex;//目的地x坐标
char* Y;//y
char* Ey;//目的地y坐标
void main()
{
    char *string = "G1 X148.981 Y103.950 E8.76037";//3D切片软件生成的G代码
    char* tstStr = string;
    G = substring(tstStr, 0, 2);
    X = substring(tstStr, 3, 1);
    Ex = substring(tstStr, 4, 7);
    Y = substring(tstStr, 12, 1);
    Ey = substring(tstStr, 13, 7);
    printf("%s\n", string);
    printf("%s\n",G);
    printf("%s\n",X);
    printf("%s\n",Ex);
    printf("%s\n",Y);
    printf("%s\n",Ey);
}

结果如图所示:

ok,我们已经实现了所说的功能。

C语言分割字符串还有其他方法,在此不再一一介绍。此方法希望可以帮到大家。

我写这个函数是用来处理cura软件生成的G代码程序的,读取文件,字符串分分割,处理数据。C语言中的其他字符串分割方法处理数据不是很方便,而这个函数使用起来是非常便捷的。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MMagicLoren

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值