字符串空白处理

/**
 * 功能:
 *     1、去除字符串两边的空白字符
 *     2、将字符串中间的连续空白字符压缩为一个空格
 *
 * 时间:2015/10/17 15:10:49
 * 作者:小代码
 *
 */

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

/**
 * @brief 将字符串两人边的空白字符删除,并返回一个新的字符串
 *
 * @param str 要处理的字符串
 *
 * @return 返回删除两边空白字符的新字符串
 */
char * str_trim(  char * str ){
  int str_len = strlen( str );
  int begin = 0;
  int end = str_len - 1;
  int i = 0;

  while( isspace( str[ begin++ ] ) ) ;
  begin--;
  while( isspace( str[ end-- ] ) ) ;
  end++;

  char *t = ( char* )malloc( sizeof( char )*( end - begin + 2 ) );
  i = 0;
  while( begin <= end && ( t[ i++ ] = str[ begin++ ] )) ;
  t[ i ] = ‘\0‘;

  return t;
}

/**
 * @brief 将字符串中间的空白字符压缩为一个空格,并返回新的字符串
 *
 * @pre 字符串两人边不能有空白字符
 * @param 要处理的字符串
 *
 * @return 返回连续空白转换为一个空格的字符串
 *
 */
char * str_constrict_space( char * str ){
  int str_len = strlen( str );
  char * t = ( char* )malloc( sizeof( str_len ) * str_len );
  int i = -1;
  int j = 0;
  while( i++ < str_len  ){
    if( !isspace( str[ i ] ) ){
      t[ j++ ] = str[ i ];
    }else{
      if( !isspace( str[ i+1 ] ) ){
	t[ j++ ] = ‘ ‘;
      }
    }
  }
  t[ j ] = ‘\0‘;
  return t;
}

int main( void ){
  char str[ 30 ];
  fgets( str,30,stdin );
  char * t = str_trim( str );
  printf( "**%s**\n",t );
  t = str_constrict_space( t );
  printf( "%s\n", t);
}

运行效果:

[[email protected] string]$ make exec
./hello
 123	456
**123	456**
123 456
[[email protected] string]$
时间: 2024-10-07 16:36:33

字符串空白处理的相关文章

由项目中一个hash2int函数引发的思考

hash2int /** * 计算一个字符串的md5折算成int返回 * @param type $str * @return type */ function hash2int($str) { $md5str = md5($str, true); $one = unpack('l', substr($md5str, 0, 4)); $two = unpack('l', substr($md5str, 4, 4)); $three = unpack('l', substr($md5str, 8,

转:php park、unpark、ord 函数使用方法(二进制流接口应用实例)

在工作中,我也逐渐了解到park,unpark,ord对于二进制字节处理的强大. 下面我逐一介绍它们. park,unpark,ord这3个函数,在我们工作中,用到它们的估计不多. 我在最近一个工作中,因为通讯需要用到二进制流,然后接口用php接收.当时在处理时候,查阅不少资料.因为它们使用确实比较少,也很少朋友工作中会用到它们. 在工作中,我也逐渐了解到park,unpark,ord对于二进制字节处理的强大. 下面我逐一介绍它们. park,unpark,ord函数使用介绍 park函数说明:

PHP: 深入pack/unpack

转自 https://my.oschina.net/goal/blog/195749 摘要: PHP作为一门为web而生的服务器端开发语言,被越来越多的公司所采用.其中不乏大公司,如腾迅.盛大.淘米.新浪等.在对性能要求比较高的项目中,PHP也逐渐演变成一门前端语言,用于访问后端接口.或者不同项目之间需要共享数据的时候,通常可以抽取出数据层,通过PHP来访问. PHP作为一门为web而生的服务器端开发语言,被越来越多的公司所采用.其中不乏大公司,如腾迅.盛大.淘米.新浪等.在对性能要求比较高的项

day 1 学习心得

鸡汤: 报培训班目的:节省时间(用更少的时间更快的学习知识),花钱投资自己. 心得: talk is cheap!啥都不要说,学会做到. become a better version. 一.python介绍 编译器的作用:将编程语言转换成机器能懂的二进制(可跨平台). 编译型语言:C C++ 解释型语言:python. java 优点: 可扩展性:如果需要一段关键代码运行得更快或者希望某些算法不公开,可以部分程序用C或C++编写,然后在Python程序中使用它们 可嵌入性:可以把Python嵌

socket进行二进制传输学习及测试

首先贴上自测代码server端: <?php set_time_limit(0); $ip = '127.0.0.1'; $port = 10005; /* +------------------------------- * @socket通信整个过程 +------------------------------- * @socket_create * @socket_bind * @socket_listen * @socket_accept * @socket_read * @socke

[转]PHP: 深入pack/unpack

From : http://my.oschina.net/goal/blog/195749 http://www.w3school.com.cn/php/func_misc_pack.asp PHP作为一门为web而生的服务器端开发语言,被越来越多的公司所采用.其中不乏大公司,如腾迅.盛大.淘米.新浪等.在对性能要求比较高的项目中,PHP也逐渐演变成一门前端语言,用于访问后端接口.或者不同项目之间需要共享数据的时候,通常可以抽取出数据层,通过PHP来访问. 写在前面的话 本文介绍的是通过二进制数

C++学习44 格式化输出,C++输出格式控制

在输出数据时,为简便起见,往往不指定输出的格式,由系统根据数据的类型采取默认的格式,但有时希望数据按指定的格式输出,如要求以十六进制或八进制形式输出一个 整数,对输出的小数只保留两位小数等.有两种方法可以达到此目的.一种是我们已经介绍过的使用控制符的方法(详情请查看:C++输入cout与输出cin):第2种是使用流对象的有关成员函数.分别叙述如下. 使用控制符控制输出格式 [例13.2] 用控制符控制输出格式. #include <iostream> #include <iomanip&

php pack、unpack、ord 函数使用方法(二进制流接口应用实例) 转

php pack.unpack.ord 函数使用方法(二进制流接口应用实例) 博客分类: PHP php二进制packunpackord 在工作中,我也逐渐了解到pack,unpack,ord对于二进制字节处理的强大. 下面我逐一介绍它们.在我们工作中,用到它们的估计不多. 我在最近一个工作中,因为通讯需要用到二进制流,然后接口用php接收.当时在处理时候,查阅不少资料.因为它们使用确实比较少,也很少朋友工作中会用到 它们. 在工作中,我也逐渐了解到pack,unpack,ord对于二进制字节处

PHP: 深入pack/unpack 字节序

http://my.oschina.net/goal/blog/195749?p=1 目录[-] 写在前面的话 什么是字节序 MSB和LSB 大端序 小端序 网络字节序 主机字节序 总结 pack/unpack详解 格式字符翻译 格式字符详解 unpack的用法 一些例子 PHP作为一门为web而生的服务器端开发语言,被越来越多的公司所采用.其中不 乏大公司,如腾迅.盛大.淘米.新浪等.在对性能要求比较高的项目中,PHP也逐渐演变成一门前端语言,用于访问后端接口.或者不同项目之间需要共享数据 的