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

20070阅读 1评论2013-04-09 tansijie
分类:C/C++

由于最近在找工作,在一个笔试的题要求删除字符串中中所有的空格,比如原数组
  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 *p = str;
  7.     char *q = str;
  8.     while(*q)
  9.     {
  10.         if (*q !=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的位置。
上一篇:windows 设置网卡混杂模式函数问题
下一篇:C双链表的插入与删除操作

文章评论