Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Форматные преобразования sprintf, sscanf.
Преобразование списка данных (a1, a2, …) по формату fmt с записью результата в строку s выполняется с помощью функции sprintf:
Строка формата fmt задает формат преобразования, состоящий из спецификаций, начинающихся с символа % (процент), и набора литерных символов, переносимых безо всяких изменений из строки формата в результат. Таблица 1.9.1. Краткие сведения о символах-спецификаторах.
Спецификаторы %d и %u имеет смысл применять к целочисленным значениям, причем если соответствующий элемент списка не является целым числом, то MATLAB заменяет целочисленную спецификацию на формат вещественного числа. Все символы, включенные в состав строки fmt и не относящиеся к форматным спецификациям, являются литералами, которые без изменения переносятся в результирующую строку. Среди литералов могут присутствовать управляющие символы, представленные в таблице 1.9.2, запись которых осуществляется согласно правилам языка программирования C. Таблица 1.9.2. Краткие сведения об управляющих символах.
Приведем ниже несколько примеров форматного вывода данных в системе MATLAB (например, в режиме командной строки):
Обратная операция по извлечению данных из строки s, сформированной функцией sprintf, выполняется с помощью функции sscanf:
Такой вариант вызова обеспечивает выборку всех данных и их обратное преобразование из символьного представления в машинное в соответствии с форматными указателями строки fmt. Форматные спецификации в данном случае те же самые, что и при преобразовании в строку. Среди дополнительных средств управления форматом следует выделить перечисленные ниже: – использование флажка, задаваемого символом «*», обеспечивающего пропуск очередного данного в строке s; – использование форматов %hd, %ld и %lg, позволяющих преобразовать извлекаемое число в машинный код короткого целого (%hd), длинного целого (%ld) или вещественного числа двойной точности (%lg); – использование формата %[s1s2...], обеспечивающего извлечение только тех символов из строки s, которые перечислены в квадратных скобках; – использование формата %[^s1s2...], обеспечивающего извлечение только тех символов из строки s, которые не перечислены в квадратных скобках. Приведем характерный пример (например, в режиме командной строки):
Заметим, что при прямом преобразовании в строку для массива A также требовалась лишь одна спецификация формата:
Следует отметить использование литерального пробела в формате. Без него оба числовых значения оказались бы «склеенными», и для их разделения потребовались бы определенные усилия.
|