zoukankan      html  css  js  c++  java
  • 删除字符串的空白符

    编制一个字符串整理函数ver(char *),实现将已知字符串s中的前导空白符和尾随的空白类字符去掉,并将字符串非空白类字符之间的连续多个空白类字符缩减为一个

    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>p,则已复制过非空白字符*/
    *(q-1)='\0'; /*如最后复制的是空白符,将其改为字符串结束符*/
    else
    *q='\0'; /*否则添加字符串结束符*/
    return p;
    }

    对于本题,还可以设置状态进行处理,开始时让flg为0,表示程序将遇到的空白类符是字符串的前导空白符;flg为1表示在复制过程中遇到了一个中间空白类字符;

    flg为2表示一个空白符字符已经处理结束.

    1 char *ver(char *s)
    2 {
    3 int flg=0;
    4 char *p=s,*q=s;
    5 for (;*s;s++) { /*顺序访问字符串s中的每个字符*/
    6 if (*s==' ' || *s=='\t' || *s=='\n') /*遇空白类字符*/
    7 flg=(flg==2)?1:flg;
    8 else {
    9 if (flg==1)
    10 *q++=' '; /*遇到空白类字符,复制下一个空白符*/
    11 *q++=*s; /*复制当前字符*/
    12 flag=2; /*一个中间空白符列处理结束*/
    13 }
    14 }
    15 *q='\0';
    16 return p;
    17 }

  • 相关阅读:
    yum安装8.0mysql数据库
    free命令详细介绍
    linux 自定义美女欢迎界面
    shll脚本常用格式和规则使用
    liunx常用知识基本命令大全
    liunx系统二进制包安装编译mysql数据库
    CentOS7更改网卡名称
    老男孩教育100道面试题
    非关系型数据库(NoSQL)
    iptables
  • 原文地址:https://www.cnblogs.com/djcsch2001/p/2057250.html
Copyright © 2011-2022 走看看