Функция для удаления возврата для указателя на строку - PullRequest
1 голос
/ 05 февраля 2020

Мне нужно написать функцию для удаления возврата и сдвига всех последующих символов. Это то, что я имею до сих пор.

int ProcessBackspaces(char *rpn_sentence)
{
        int i=0;
        char *array [MAX];
        char *b_token;
        b_token = strtok(rpn_sentence, "\b");
        while (b_token!=NULL){
            array[i]=b_token;
            i++;
        }    
}

Я застрял в том, как заставить указатель прохода (char * rpn_sentence) указывать на все элементы массива указателей.

1 Ответ

0 голосов
/ 05 февраля 2020

как заставить указатель прохода (char * rpn_sentence) указывать на все элементы массива указателей.

Просто увеличивать указатель (или его копию);

Учтите также, что строка может иметь 0 (быть быстрым, затем) или более 1 возврата (только копировать символы один раз).

char *ProcessBackspaces(char *rpn_sentence) {
  char *src = strchr(rpn, '\b'); // Find first quickly
  if (src) {
    char *dest = src;
    src++;
    while (*src) {
      if (*src != '\b') {
        *dest++ = *src;  // Save non-backspaces, increment destination
      }
      src++;             // Increment source
    }
    *dest = '\0';      
  }
  return rpn;  // Perhaps return start of string
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...