![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Запись данных в файл
В случае, когда строка, записываемая в файл, представляет собой цепочку символов, она обязана подвергнуться преобразованию (форматированию) по двум следующим причинам: · в оперативной памяти каждый символ представлен двумя байтами, а в файле — одним; · для того чтобы отделить одну строку от другой, вслед за последним символом на диск должна быть записана пара управляющих кодов. На самом деле символьная информация обычно перемежается с числовыми данными, которые должны быть тем или иным способом преобразованы из машинного формата в соответствующие поля строки. Таким конвертированием данных из их внутреннего представления в символьное заведуют форматные указатели, задаваемые в качестве одного из параметров функции fprintf. 'f_id=fopen('text.txt', 'wt'); % открыли текстовый файл c1=fprintf (f_id, '%s\n', 'ABCD') % вывели в файл строку C1= > > fclose(f_id); Форматные указатели всегда начинаются с символа %. В приведенном примере такой указатель один — %s, и он означает, что перед записью на диск необходимо преобразовать строку ABCD, занимающую в оперативной памяти 8 байтов. Управляющая комбинация '\n’, следующая за форматным указателем, записывается в файл как признак конца строки. Первый входной аргумент функции fprintf задает номер открытого файла. Им, в частности, может быть число 1, и тогда данные передаются в файл стандартного вывода, т. е. в командное окно: » fprintf(1, '%s\n', 'ABCD'); ABCD Второй входной аргумент функции fprintf представлен строкой, содержащей форматные указатели и так называемые литеральные константы. К последним относятся все символы, не принадлежащие к форматным указателям. Количество указателей может не соответствовать количеству преобразуемых данных. И этим MATLAB кординально отличается о других систем программирования. Если длина списка форматных указателей меньше, чем количество преобразуемых данных, то список цикдически повторяется > > fprintf (' %4d', l, 2, 3, 4) 1 2 3 4 Если количество указателей формата превышает длину выводимого списка, то лишние форматные указатели игнорируются: > > fprintf (' %d %f %e', l, 2) 1 2.000000 Данные, подлежащие преобразованию перед записью в файл, задаются третьим и последующими входными аргументами функции fprintf. Например, если мы хотим записать в очередную строку текстового файла два целых и одно вещественное значения переменных il, i2 и r3, то это может выглядеть так. » i1=125; » i2=2003; » гЗ=2.3456; » fprintf('%5d %d %8.3f\n', il, i2, r3); 125 2003 2.346 Значение переменной il преобразуется в формат целого числа (об этом свидетельствует буква d в первом форматном указателе), и для его записи в выводной строке отводится 5 позиций. Между первым и вторым форматными зателями находится один пробел, который считается литеральной константой, разделяющей первое и второе число. Значение переменной i2 преобразуется по формату %d и занимает в выводной строке 4 позиции. После второго числа вставляется еще один литеральный пробел, расположенный между вторым и третьим указателями формата. Следующие 8 позиций отведены для результата преобразования вещественного числа (об этом свидетельствует буква f в третьем форматном указателе), у которого сохраняются 3 значащие цифры в дробной части. Обратите внимание на то, что результат преобразования третьего числа округлен в соответствии с общепринятыми правилами. Указатель формата начинается с символа %, вслед за которым могут быть расположены три необязательные компонента – флажки, ширина(w) и точность (.n).Завершается указатель одним из символов, характеризующих тип преобразования данных.
|