2010-02-16 3 views
-1

Я пытаюсь удалить пробелы из конца массива символов (строки).Застрял с синтаксисом Си

Это псевдо-код, что я делаю, но он продолжает удалять всю строку:

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'; 

Обратите внимание, что это == пространство не = пространство.


Edit: Если бы я собирался написать это, я бы, вероятно, на самом деле использовать что-то вроде:

#include <string.h> 
... 

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

Вы захотите записать '\ 0' один байт дальше, теперь вы переписываете последний непространственный символ. – Wim

+0

Очень хорошая точка. Исправлена. –

+3

не забывайте, что очень плохие вещи могут произойти, если ваша строка - это все пробелы. – plinth

0

Без кода мы можем только догадываться:

Как mypointer инициализируется?

Вы уверены, что условие цикла while? Должно ли это быть, когда «последний символ - это пространство»?

1

Возможно, вы установили mypointer в \0, который устанавливает указатель на NULL. Вам необходимо установить mypointer[1] на номер \0. Кроме того, убедитесь, что вы делаете правильные вещи для следующих реберных случаях:

  • когда строка все пробелы,
  • когда длина строки 0.
0

Небольшое улучшение возможно:

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

Посмотрите на эту code, что делает точную работу раздеться пробелы из конца строки ... это из архива Snippets - это обучающая вещь, чтобы смотреть WHA t происходит при переходе через отладчик и очень полезная коллекция кода C также ...

Смежные вопросы