1. 程式人生 > >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 *= 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的位置。