2010-02-16 76 views
-1

我想從字符數組(字符串)的末尾刪除空格。卡住C語法

這是我在做什麼的僞代碼,但它一直刪除整個字符串:

if(string length - 1 != a space) 
    return 

否則,它必須等於一個空間,所以

while *mypointer-- != a space 
//This should loop back to where there is a character. 

的同時外循環,我現在通過添加一個到指針

mypointer ++; 

然後設置mypointer'\ 0'來發信號字符串的結尾。

我在做一些根本錯誤的事情,但我似乎無法弄清楚。會是什麼呢?

+7

爲什麼不發佈你寫的C代碼? – 2010-02-16 19:19:35

回答

5

有點千里眼:

while(*mypointer == a space) { 
    --mypointer; 
} 
mypointer[1] = '\0'; 

請注意,這是一個==沒有空間=空間。


編輯: 如果我打算寫這篇文章,我可能真的使用這樣的:

#include <string.h> 
... 

char *mypointer = strrchr(string, ' '); 
if (mypointer) *mypointer = '\0'; 
+0

你會想要進一步寫入'\ 0'一個字節,你現在覆蓋最後一個非空格字符。 – Wim 2010-02-16 19:28:40

+0

非常好的一點。固定。 – 2010-02-16 19:29:53

+3

不要忘記,如果你的字符串都是空格,可能會發生非常糟糕的事情。 – plinth 2010-02-16 19:32:53

0

沒有代碼,我們便可猜出:

如何mypointer初始化?

你確定while循環條件嗎?它應該是'最後一個字符是空間'嗎?

1

您可能將mypointer設置爲\0,它將指針設置爲NULL。您需要將mypointer[1]設置爲\0。此外,請確保您做以下邊緣的情況下正確的事情:

  • 當字符串是所有空間,
  • 當字符串長度爲0
0

略有好轉也許:

while(*mypointer == a space) { 
    *mypointer-- = '\0'; 
} 
0

看看這個code做的確切工作是去掉字符串末尾的空格......這是來自Snippets存檔 - 這是一個教育的事情,看wha t的時候正在通過調試器和非常有用的C代碼集合也正在進行......