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

isGraph()

isGraph() проверяет, является ли символ char видимым печатаемым знаком — в отличие от isPrint(), возвращает false для пробела.

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

Описание

isGraph() проверяет, является ли символ видимым печатаемым знаком. Ключевое отличие от isPrint(): пробел считается печатаемым символом, но не имеет видимого содержимого, поэтому isGraph() вернёт для него false. Все остальные печатаемые символы — буквы, цифры, знаки препинания — пройдут проверку успешно.

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

Синтаксис

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

isGraph(thisChar)

Параметры

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

Возвращает

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

Пример кода

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

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

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

void loop() {
}

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

  • Фильтрация ввода с клавиатуры или Serial: если нужно обрабатывать только видимые символы и игнорировать пробелы, переводы строк и управляющие коды.
  • Валидация строк: проверка, что строка содержит хотя бы один значимый символ, а не состоит только из пробелов.
  • Парсинг текстовых протоколов: выделение токенов из потока данных, пришедших через UART или другой интерфейс.

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

  • isGraph() возвращает false для пробела (' '), хотя isPrint() вернул бы true. Это принципиальное различие между двумя функциями.
  • Управляющие символы (например, '\n', '\r', '\t') также дают false.
  • Функция работает с кодами ASCII от 33 до 126 включительно — именно этот диапазон считается «графическим».
  • Если вы получаете символы через Serial.read(), сначала проверьте, что результат не равен -1, и только потом приводите его к char перед передачей в isGraph().
  • При работе с кириллицей или другими символами вне диапазона ASCII результат непредсказуем — функция рассчитана только на стандартную таблицу ASCII.

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