实例五十三:字符串处理

实例五十三:字符串处理

问题描述:
编制一个字符串处理程序,实现将已知字符串 s 中的前导空白类字符和尾随的空白字符去掉,并将字符串字符中之间的连续多个空白字符缩减为一个空白字符。

算法思路:

按照题目要求去整理字符串,首先用一个跳过空白符的循环,去掉字符串 s 中的前导空白字符;然后顺序访问字符串 s 的其余字符,对每个顺序访问的当前字符,检查该字符是否为空白字符,若是,用一个循环跳过随后的多余空白字符,直至字符串 s 访问结束;最后要考虑的是当压缩过程结束时,若其最后一个复制字符若为空白符,则要把该空白符改为字符串结束符。

/*字符串处理*/

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

char *ver(char *s)
{
    char *p=s,*q=s;
    for(;*s==' '||*s=='\t'||*s=='\n';s++);                   /*跳过前导空格的循环*/
    for(;*s;)                                               /*顺序访问字符串s中的每个字符*/
    {
        *q++=(*s=='\t'||*s=='\n')?' ':*s;
        if(*s==' '&&*s=='\t'&&*s=='\n')
            s++;
        else
            while(*s==' '||*s=='\t'||*s=='\n')                /*跳过中间连续的多余空白符*/
                s++;
    }
    if(q>p&&*(q-1)==' ')
        *q = '\0';
    else
        *q='\0';
    return p;
}

int main()
{
    char s[100];
    gets(s);
    printf("%s\n",s);
    char *ss;
    ss = ver(s);
    printf("%s",ss);
    return 0;
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值