字符串空格处理

 

/****************************************************
  函数功能:
  (1) 子函数strTrimL实现去除字符串左边空格
  (2) 子函数strTrimR实现去除字符串右边空格
  (3) 子函数strTrim实现去除字符串两边空格
  (4) 子函数strLeft实现取字符串左边子串
  (5) 子函数strRight实现取字符串右边子串
  (6) 子函数strMid实现取字符串子串
  (7) 子函数strFill实现字符串填充操作
  (8) 子函数strRepl实现字符串替换操作
***************************************************/

#include <stdio.h>
#include <string.h>
#include <memory.h>

#define MAX 100+1

static  char s[MAX] = "  happyhljkla sdfsdfas  ";
static  char s1[MAX] = "  happyhljkla sdfsdfas  ";
static  char s2[MAX] = "  happyhljkla sdfsdfas  ";
static  char s3[MAX] = "  happyhljkla sdfsdfas  ";
static  char s4[MAX] = "  happyhljkla sdfsdfas  ";

/*去除字符串左边空格*/
int strTrimL(char *s)
{
    char *p;

  
    for(p=s; *p != '\0';p++)    /*查找空格*/
    {      
        if(*p != ' ')
        break;
    }
    memcpy(s, p, p-s);          /*将非空格copy过去*/
    s[strlen(s)] = '\0';        /*补充结束符\0*/
    return 0;
}

/*去除字符串右边空格*/
int strTrimR(char *s)
{
  char *p;
   p = s2 + strlen(s2)-1;      /*指向字符串结尾*/

  
    while(*p == ' ')            /*查找右边空格*/
    {
        *p = '\0';             /*将空格替换为结束符\0*/
        p--;
    }
    return 0;
}

/*去除两边空格*/
int strTrim(char *s)
{

    char *p = s;
    int i,j,k = 0;
    while(*p)                /*循环读字符串*/
    {
        if(*p != ' ')        /*查找空格位置*/
            s[k++] = *p++;   /*保存非空格字符*/
        else
            p++;            
    }
    s[k] = '\0';             /*补充结束符\0*/

    return 0;
}


/*子函数strLeft实现取字符串左边子串*/
int strLeft(char *s, int len, char *result)
{
    strncpy(result,s2,len);     /*复制前len个字符*/
    s2[strlen(s2)] = '\0';      /*补充结束符\0*/
    return 0;
}


/*子函数strRight实现取字符串右边子串*/
int strRight(char *s, int len, char *result)
{
    int i;
    i = strlen(s3) - len;        /*去右首串下标*/
    strncpy(result, s3+i, len);  /*从下标开始复制字符*/
    s3[strlen(s3)] = '\0';      
    return 0;
}

/*子函数strMid实现取字符串子串*/
 int strMid(char *s, int start, int len, char *result)
{
    strncpy(result, s2+start-1,len);  /*确定中间字符串长度并copy*/
    result[strlen(result)] = '\0';
    return 0;
}

/*字符串替换*/
int strRepl(char *s, char *rs)
{
    memcpy(s, rs, strlen(rs));    /*确定rs长度并替换s*/
    s[strlen(s)] = '\0';
    printf("替换结果为[%s]\n", s );
    return 0;
}

/*字符串填充*/
 int strFill(char *s, char c, int len, int flag)
{
    char cmd[MAX];

    /*左填充*/
    if(0 == flag){
    sprintf(cmd, "%c%s", c, s); /*将两个字符拼在一起*/
    printf("左填充后的字符为[%s]\n源字符串长度为[%d]\n填充后字符串长度为[%d]\n", cmd,strlen(s), strlen(cmd));
    }

    /*右填充*/
    if(1 == flag){
        sprintf(cmd, "%s%c", s, c);
        printf("右填充后的字符为[%s]\n源字符串长度为[%d]\n填充后字符串长度为[%d]\n", cmd,strlen(s), strlen(cmd));
    }
    return 0;
}

int main(int argc, char *argv[])
{
    char result[MAX];
    char rs[MAX] = " just do it every day go to happy ";
    char c = 'G';
    int len = 10;
    int start = 10;

    printf("原字符串为[%s]\n", s);
    strTrimL(s);
    printf("去除左边空格位结果为[%s]\n", s);
    strTrimR(s2);
    printf("去除右边空格位结果为[%s]\n", s2);
    strTrim(s1);
    printf("去除两边空格位结果为[%s]\n", s1);

    strLeft(s2, len, result);
    printf("取字符串前%d个字符为[%s]\n",len, result);
    strRight(s3, len, result);
    printf("取字符串后%d个字符为[%s]\n",len, result);
    strMid(s2, start, len, result);
    printf("取字符串第%d个字符与后%d个字符之间的子串为[%s]\n",start, len, result);

    strRepl(s, rs);

    strFill(s4, c, MAX, 0);
    strFill(s4, c, MAX, 1);

    return 0;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值