首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

简略的trimleft()与trimright()

2012-12-31 
简单的trimleft()与trimright()高手帮帮忙,写个简单的trimleft函数和trimright函数,一定要分别实现删掉左

简单的trimleft()与trimright()
高手帮帮忙,写个简单的trimleft函数和trimright函数,一定要分别实现删掉左边空格和'/t',右边空格和'/t',如果可以的话,最好能实现从字符串中删除指定左右两边子字符串,如trimleft(char * str1,char *str2)删除str1中的str2.
[解决办法]


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

int trimleft(char* s)
{
    if(! s) return -1;
    char* p = s;
    while(*p && ((' ' == *p) 
[解决办法]
 ('\t' == *p)))
        p ++;

    if(*p)
        strcpy(s, p);
    else
        *s = 0;

    return 0;
}

int trimright(char* s)
{
    if(! s) return -1;
    char* p = s + strlen(s) - 1;

    while(*p && (p - s) && ((' ' == *p) 
[解决办法]
 ('\t' == *p)))
        p --;

    *(p + 1) = 0;
    if((' ' == *p) 
[解决办法]
 ('\t' == *p))
        *p = 0;

    return 0;
}

int main(void)
{
    char s1[] = "   \t\tabcdefg  1234567  \t  \t  ";
    char s2[] = "   \t\t  \t\t   \t";

    printf("s1(%d): %s\n", strlen(s1), s1);
    trimleft(s1);
    printf("s1(%d): %s\n", strlen(s1), s1);
    trimright(s1);
    printf("s1(%d): %s\n", strlen(s1), s1);

    printf("s2(%d): %s\n", strlen(s2), s2);
    trimleft(s2);
    printf("s2(%d): %s\n", strlen(s2), s2);
    trimright(s2);
    printf("s2(%d): %s\n", strlen(s2), s2);

    getchar();

    return 0;
}


输出:

s1(29):                 abcdefg  1234567
s1(24): abcdefg  1234567
s1(16): abcdefg  1234567
s2(13):
s2(0):
s2(0):

热点排行
Bad Request.