自己实现的一个字符串分割截取函数,以及查找指定字符

因为一次面试,给我出的一道题目:


#include <stdio.h>

#include <stdlib.h>
#include <string.h>

#define MAXSIZE 124
int split_n( char *, char **,char  ) ;

int main(int argc, char **argv)
{
    int Return_Num = 0 ;
    int r_len ;
    int n ;
    char string_n[MAXSIZE] ;
    char **toString = NULL ;
    toString = (char**)malloc(124*sizeof(char*));  // 这里要注意给toString 分配空间
    printf ( "Please wirte:\n" ) ;
    fgets(string_n, MAXSIZE, stdin) ;
    r_len = strlen (string_n) ;       
    string_n[r_len-1] = '\0' ;       // 因为fgets是'\n'结尾的而不是'\0',所以做一个替换
    Return_Num = split_n (string_n, toString, ' ') ;
    for (n=0; n<=Return_Num; n++)
    {
        printf ("%s\n",toString[n]) ;
    }

return 0 ;
}

int split_n( char *from, char **to, char separator )
{
    int R_num = 0 ;
    int n = 0 ;
    int up = 0 ;
    char *temp = NULL ;
    char *from_back = from ;
    while (*from_back != '\0')
    {
        n++ ;
        if (*from_back == separator)
        {
            temp = (char *)malloc( n ) ;
            strncpy ( temp, from+up, n ) ;
            up += n ;
            temp[n] = '\0' ;
            *to = temp ;
            *(to++) ;
            R_num++ ;
            n = 0 ;
        }
        from_back++ ;
    }
    if (n > 0)
    {
        temp = (char *)malloc( n ) ;
        strncpy ( temp, from+up, n ) ;
        temp[n] = '\0' ;
        *to = temp ;
    }
return R_num ;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值