C 字符串删除指定字符,比如删除字符串中的空格

http://blog.chinaunix.net/uid-9234131-id-3575486.html


 

分类: C/C++

2013-04-09 22:37:09

由于最近在找工作,在一个笔试的题要求删除字符串中中所有的空格,比如原数组
  1. char array[]="I am Chinese . I can speak English";
要将原数组变成

  1. char array[]="IamChinese.IcanspeakEnglish";
当时时间紧迫,编写了一个函数,虽然完成了功能,但是用了两层循环,效率不高,晚上回家补写删除空格函数,内容如下:

  1. /************************************************************************/
  2. /* 删除字符串中指定字符 */
  3. /************************************************************************/
  4. void del_char(char* str,char ch)
  5. {
  6.     char *= str;
  7.     char *= str;
  8.     while(*q)
  9.     {
  10.         if (*!=ch)
  11.         {
  12.             *p++ = *q;
  13.         }
  14.         q++;
  15.     }
  16.     *p='\0';
  17. }
这个函数的原理就是p,q指针指向同一个字符串,当q指针的值为要删除的字符时,q向前跳一个字符,但是p指向要删除的字符不动,q则判断新位置值是否为删除字符,如果不是,那么就从不是删除字符的位置的值赋给p指向空格的值,循环往前加,直到q=\0结束,但是当q结束了,但是p移植后面的值没有被删除,那么p='\0'则表示将后面的字符截断了。字符串的长度就变成p的位置。
阅读(16273) | 评论(1) | 转发(3) |

猜你喜欢

转载自blog.csdn.net/mengzhengjie/article/details/79727001