фильтрация строки в c - PullRequest
       1

фильтрация строки в c

0 голосов
/ 20 марта 2011

Учитывая ввод ~ Zw ~~ "iE ^ L, я должен получить! W ~" iE ^ L, вместо этого я получаю Zw ~ "iE ^ L

Так что он просто ловит ~~ и заменяет его на ~, но я хочу заменить ~ Z на!

Есть идеи?

  for (j = 0; j < dataCharCount; j++, k++)
  {
    if (inputData[j] == '~' && inputData[j + 1] == '~')
    {
      filteredInputData[k] = '~';
      j++;
    }
    else if (inputData[j] == '~' && inputData[j + 1] == 'Z')
    {
      filteredInputData[k] = '!';
      j++;

    }
    filteredInputData[k] = inputData[j];
  }

Ответы [ 3 ]

3 голосов
/ 20 марта 2011
} else {
    filteredInputData[k] = inputData[j];
}

Без другого вы перезаписываете filteredInputData[k] после операторов if.

0 голосов
/ 20 марта 2011

Последнее утверждение в вашем цикле перезаписывает ~ или !, которое вы написали через ваше if тело статута. Причина, по которой он выглядит так, будто он работает для ~~, заключается в том, что он перезаписывает ~ другим ~. В случае ~Z вы перезаписываете ! на Z. Пройдите по коду с помощью отладчика - вы сразу увидите, что происходит.

0 голосов
/ 20 марта 2011

отсутствует else перед последним значением функции.Вы, конечно, не хотите копировать входные данные на выход (filteredInputData[k] = inputData[j];) после выполнения замены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...