Если вы не изучите sprintf(), ваш код позже возненавидит вас

🤩 БЕСПЛАТНЫЙ экспресс-курс по Arduino 👇👇
Хотите узнать больше? Ознакомьтесь с нашими курсами!
Мы разработали эту печатную плату для начинающих! Kit-On-A-Shield:
СЛЕДИТЕ ЗА НАМИ В ДРУГИХ МЕСТАХ --------------------------------------------------- Facebook:   / programmingelectronicsacademy   Twitter:   / progelecacademy   Сайт:
**Код, расшифровку, задания и другую информацию для этого урока можно получить на нашем сайте**
SPRINTF() С ARDUINO | ВЫВОД НЕСКОЛЬКИХ ПЕРЕМЕННЫХ НА ПОСЛЕДОВАТЕЛЬНЫЙ МОНИТОР Пытаетесь разобраться с функцией sprintf() на Arduino? Или, может быть, хотите вывести несколько переменных на последовательный монитор, не используя множество отдельных операторов Serial.print(). Если да, то вы попали по адресу. В этом уроке вы узнаете, как именно использовать sprintf(). ИСПОЛЬЗОВАНИЕ ПРОСТО SERIAL.PRINT() Допустим, вы хотите вывести эту строку текста на последовательный монитор: «Температура 3 буррито составляет 147,7 градусов по Фаренгейту» Где количество буррито и значение температуры являются переменными. Использование Serial.print() потребовало бы 5 строк кода для вывода только этой строки текста. Serial.print("The "); Serial.print(numBurritos); Serial.print(" burritos are "); Serial.print(tempStr); Serial.println(" градусов по Фаренгейту"); Фактически, для каждой переменной, добавляемой в вывод, в код добавляются ещё два последовательных вывода. Что, если вы хотите вывести строку с 4 переменными, вставленными в строку, например: «Температура 3 буррито составляет 147,7 градусов по Фаренгейту, вес — 14 унций, и они были съедены 3 минуты назад?» Для этого потребуется 9 строк кода! SPRINTF() НА ПОМОЩЬ Именно здесь на помощь приходит sprintf(). Мы можем вывести в строку столько переменных, сколько нужно, и объём необходимого кода останется на уровне 3 строк. Вот три строки кода, которые вам понадобятся: char buffer[40]; sprintf(buffer, "Температура %d буррито составляет %s градусов по Фаренгейту", numBurritos, tempStr); Serial.println(buffer); Сначала вам нужен массив символов для сохранения выходной строки. Затем вам нужна функция sprintf(), которая объединит текст и переменные в строку. Наконец, используйте функцию Serial.print() для отображения отформатированной строки. Давайте подробнее рассмотрим каждую строку кода. char buffer[40]; Массив символов должен быть такого же размера или больше, чем конечная выходная строка. Поэтому подсчитайте количество символов, которые вы планируете сохранить в этой строке, и убедитесь, что буфер имеет как минимум такой же размер. Следующая строка кода — это сама функция sprintf(). sprintf() означает «string print format(ted)». sprintf(buffer, "The %d burritos are %s degrees F", numBurritos, tempStr); Функция sprintf() принимает минимум 2 аргумента. Первый аргумент — это место, где вы планируете сохранить строку, которую sprintf() сгенерирует для вас. Здесь используется символьный буфер, созданный в предыдущей строке. Показать аргумент буфера в sprintf() Следующий аргумент — это строка, которую вы хотите создать, заполненная спецификаторами формата, куда вы хотите вставить переменные. Спецификатор формата — это знак %. Буква, следующая за спецификатором формата, называется символом формата и сообщает sprintf(), какой тип данных будет использоваться для этой переменной. Показать второй строковый аргумент для sprintf() со спецификаторами формата, обозначенными как "Температура 3 буррито — 147,7 градусов по Фаренгейту" В этом примере у нас есть 2 спецификатора формата (%) — это означает, что мы хотим вставить в выходную строку 2 переменные. Спецификаторы символов на первый взгляд кажутся немного странными. Это просто буквы, обозначающие тип данных, который будет вставлен. Как только вы узнаете значение каждой буквы, всё станет понятнее.

Смотрите также