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

isPrintable()

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

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

Описание

Функция isPrintable() определяет, относится ли символ к категории печатаемых. Печатаемыми считаются все символы, которые реально отображаются при выводе: буквы, цифры, знаки препинания и пробел. Непечатаемые символы — это управляющие коды вроде перевода строки (\n), возврата каретки (\r), табуляции (\t) и прочих служебных символов ASCII с кодами от 0 до 31, а также код 127 (DEL).

Функция возвращает true, если переданный символ можно распечатать.

Синтаксис

Используйте следующую функцию для проверки переменной типа char:

isPrintable(thisChar)

Параметры

thisChar: символ для проверки. Допустимый тип данных: char.

Возвращает

Функция возвращает true, если символ является печатаемым.

Пример кода

char myChar = ' ';  // попробуйте с '\n' — непечатаемый символ

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

  if (isPrintable(myChar)) {  // проверяет, является ли myChar печатаемым символом
    Serial.println("The character is printable");
  } else {
    Serial.println("The character is not printable");
  }
}

void loop() {
}

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

  • Фильтрация входных данных с Serial — перед обработкой строки, полученной через Serial.read(), удобно отбросить управляющие символы и оставить только те, что имеют визуальное представление.
  • Парсинг текстовых протоколов — при разборе ответов от модулей (GPS, GSM, Wi-Fi) нужно отличать полезный текст от служебных байтов.
  • Вывод на дисплей — перед отправкой символа на LCD или OLED имеет смысл убедиться, что он вообще будет виден, иначе дисплей может вести себя непредсказуемо.
  • Валидация пользовательского ввода — если устройство принимает команды с клавиатуры или через Bluetooth, isPrintable() помогает быстро проверить, что пришли именно символы, а не мусор.

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

  • Пробел (код ASCII 32) считается печатаемым символом — isPrintable() вернёт true для него.
  • Табуляция (\t, код 9) и перевод строки (\n, код 10) — не печатаемые символы, функция вернёт false.
  • Функция работает с кодами ASCII от 0 до 127. Поведение для значений выше 127 (расширенный ASCII) зависит от реализации и не гарантировано.
  • Если вы читаете данные побайтово через Serial.read(), сначала убедитесь, что результат не равен -1, и только потом приводите его к char перед передачей в isPrintable().
  • Функция не блокирует выполнение программы — это просто проверка значения символа, результат возвращается мгновенно.

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