C语言实现split函数

实现类似JAVA编程语言中split函数: (这里以空格为分隔符进行演示)

  1. 函数的声明:void split(char *src,const char *separator,char **dest,int *num) {}
  2. 变量:
    1.*src:要进行分割的字符串地址,
    2.*separator:分隔符,设置为常量字符串,这里的分隔符可以为字符串,
    3.**dest:分割结束后数据存储的地址,二维数组,
    4.*num:返回的是字符串中存在的分隔符的数量。
  3. 返回值:这个函数既可以返回分割之后的数组,又可以返回分隔符的数量。 这里使用的是指针的方式返回,修改的是原数据省去了返回这个环节, 当然也可以使用结构体的方式返回。
#include <stdio.h>
#include <string.h> 

void split(char *src,const char *separator,char **dest,int *num) {
     char *pNext;
     //记录分隔符数量 
     int count = 0;
     //原字符串为空 
     if (src == NULL || strlen(src) == 0)
        return;
    //未输入分隔符
     if (separator == NULL || strlen(separator) == 0)
        return;   
	/*
		c语言string库中函数,
		声明: 
		char *strtok(char *str, const char *delim)
		参数: 
	    str -- 要被分解成一组小字符串的字符串。
    	delim -- 包含分隔符的 C 字符串。
    	返回值:
		该函数返回被分解的第一个子字符串,如果没有可检索的字符串,则返回一个空指针。 

	*/
	char *strtok(char *str, const char *delim); 
	 //获得第一个由分隔符分割的字符串 
    pNext = strtok(src,separator);
    while(pNext != NULL) {
     	//存入到目的字符串数组中 
        *dest++ = pNext; 
        ++count;
        /*
			strtok()用来将字符串分割成一个个片段。参数s指向欲分割的字符串,参数delim则为分割字符串中包含的所有字符。
			当strtok()在参数s的字符串中发现参数delim中包涵的分割字符时,则会将该字符改为\0 字符。
			在第一次调用时,strtok()必需给予参数s字符串,往后的调用则将参数s设置成NULL。
			每次调用成功则返回指向被分割出片段的指针。

		*/  
        pNext = strtok(NULL,separator);  
    }  
    *num = count;
}    

//将一串以空格为分割线的字符串分开,数据存到一个二维数组中去 
int main(){
	char str[100];
	char *p[10]={0};
	int num=0,i;
	gets(str);
	//attention!!!!! 这里的分隔符已定要写为字符串的形式。 
	split(str," ",p,&num);
	for(i = 0;i < num; i ++) {
        printf("%s\n",p[i]);
    }
    return 0;
} 

 

在这里插入图片描述
程序运行结果

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值