Главная chevron_right Функции chevron_right Символы chevron_right isControl()

isControl()

isControl() проверяет, является ли символ управляющим (коды 0–31 и 127): возвращает true для '\n', '\r', '\t' и других непечатаемых символов ASCII.

Полная статья

Описание

Функция isControl() проверяет, относится ли переданный символ к категории управляющих символов ASCII. Управляющие символы — это непечатаемые символы с кодами от 0 до 31, а также символ с кодом 127 (DEL). К ним относятся, например, перевод строки ('\n', код 10), возврат каретки ('\r', код 13), горизонтальная табуляция ('\t', код 9), нулевой символ ('\0', код 0) и другие служебные коды.

Если символ является управляющим, функция возвращает true.

Синтаксис

isControl(thisChar)

Параметры

thisChar: символ, который нужно проверить. Тип данных: char.

Возвращает

Функция возвращает true, если переданный символ является управляющим. Если символ — обычный печатаемый знак (буква, цифра, знак препинания и т. д.), функция вернёт false.

Пример кода

char myChar = '\n'; // попробуйте 'n' как неуправляющий символ

void setup() {
  Serial.begin(9600);

  if (isControl(myChar)) {  // проверяет, является ли myChar управляющим символом
    Serial.println("The character is a control character");
  }
  else {
    Serial.println("The character is not a control character");
  }
}

void loop() {
}

Где применяется

  • Разбор входящих данных через Serial — при чтении строк посимвольно удобно отсеивать управляющие символы ('\n', '\r') перед тем, как обрабатывать полезное содержимое.
  • Валидация пользовательского ввода — если устройство принимает команды в текстовом виде, isControl() помогает быстро отфильтровать «мусорные» байты.
  • Работа с протоколами — некоторые протоколы используют управляющие символы как маркеры начала или конца пакета; функция позволяет легко их обнаружить.

Практические замечания

  • Функция работает корректно только с символами в диапазоне ASCII (0–127). Передача значений выше 127 может дать непредсказуемый результат — поведение зависит от реализации стандартной библиотеки C.
  • Пробел (' ', код 32) не является управляющим символом — isControl() вернёт для него false.
  • Нулевой символ '\0' (код 0) считается управляющим, поэтому функция вернёт true и для него.
  • Если вы читаете данные из Serial и хотите накапливать только «видимые» символы, удобно использовать isControl() в паре с isPrint() или isGraph().
  • Функция не блокирует выполнение программы и не имеет побочных эффектов — это простая проверка значения символа.

Полезные материалы