mfscanf
считывает входные данные из потока, указанного указателем потока (интерфейс с C-функцией fscanf)
mscanf
считывает входные данные с устройства стандартного ввода данных (интерфейс с C-функцией scanf)
msscanf
считывает свои входные данные из символьной строки (интерфейс с C-функцией sscanf)
Синтаксис
[n, v_1,..., v_m] = mfscanf([niter,]fd, format) L = mfscanf([niter,] fd,format) [n, v_1,..., v_m] = mscanf([niter,] format) L = mscanf([niter,]format) [n, v_1,..., v_m] = msscanf([niter,]str, format) L = msscanf([niter,] str, format)
Аргументы
- format
Scilab-строка, описывающая формат, который нужно использовать для записи оставшихся операндов. Операнд
format
следует, как можно ближе синтаксису операндов формата C-функцииprintf
, как описано в преобразовании в scanf.- fd
положительное целое число: файловый дескриптор, возвращённый функцией
mopen
. Значение -1 относится к последнему открытому файлу.- str
Scilab-строка или вектор строк.
- niter
целое число: сколько раз использовать
format
.- n
целое число: количество данных, которое необходимо прочитать или -1, если конец файла был достигнут прежде, чем что-либо из данных было прочитано.
- v_i
каждая из функций считывает символы, интерпретирует их в соответствии с форматом
format
и сохраняет результаты в своих выходных аргументах. Если выходных аргументов указано больше, чемn
, то последние аргументыv_n+1, ..., v_m
устанавливаются пустыми матрицами.- L
если все данные однородны, то они сохраняются в уникальном векторе, который возвращается, в противном случае последовательности одного типа данных сохраняются в матрицах, а возвращается матричноориентированный типизированный список
mlist
(с типомcblock
), содержащий все построенные матрицы.
Описание
Функция mfscanf
считывает символы из потока
fd
.
Функция mscanf
считывает символы из окна Scilab.
Функция msscanf
считывает символы из Scilab-строки
str
.
Необязательный аргумент niter
определяет сколько раз
использовать формат. Одна итерация формирует одну строку в выходной
матрице. Если niter==-1
, то функция выполняет итерации до
конца файла. Значение niter
по умолчанию равно 1.
Комментарии о точности:
mfscanf
основана на C-функции
fscanf
. Если вы используете
'%f'
, '%g'
,
'%e'
в качестве формата, то ваши данные будут
приведены в тип плавающей запятой и возвращены в Scilab-переменную.
Если эта Scilab-переменная является числом двойной точности, то вы
можете получить некоторые ошибки по точности. В этом случае лучше
использовать формат '%lg'
.
Примеры
//---------------------------------------------------------- //-- Простое использование -- //---------------------------------------------------------- s='1 1.3' // строка [n,a,b]=msscanf(s,"%i %e") L=msscanf(s,"%i %e") //---------------------------------------------------------- //-- Примеры форматов -- //---------------------------------------------------------- msscanf(" 12\n",'%c%c%c%c') // сканирование символов msscanf('0xabc','%x') // сканирование в шестнадцатеричном формате msscanf('012345abczoo','%[0-9abc]%s') //обозначение [] // считывание чисел типов float и double msscanf('4345.988','%g')-4345.988 // сканирование числа float msscanf('4345.988','%lg')-4345.988 // сканирование числа double //---------------------------------------------------------- //-- сканирование файлов с многострочными данными //---------------------------------------------------------- // создание файла с данными u=mopen(TMPDIR+'/foo','w'); t=(0:0.1:%pi)';mfprintf(u,"%6.3f %6.3f\n",t,sin(t)) mclose(u); // открытие файла на чтение u=mopen(TMPDIR+'/foo','r'); // чтение файла строка за строкой [n,a,b]=mfscanf(u,'%e %e') // первая строка, используя синтаксис множества данных с левой стороны l=mfscanf(u,'%e %e') // вторая строка, используя синтаксис одной переменной с левой стороны //использование niter для чтения ещё пяти строк l=mfscanf(5,u,'%e %e') // использование niter=-1 для чтения до конца файла l=mfscanf(-1,u,'%e %e') // закрытие файла mclose(u); //------------------------------------------------------------------ //-- сканирование векторов с многострочными строковыми значениями -- //------------------------------------------------------------------ //использование niter для сканирования вектора строковых значений [n,Names,Ages]=msscanf(-1,["Alain 19";"Pierre 15";"Tom 12"],'%s %d') D=msscanf(-1,["Alain 19";"Pierre 15";"Tom 12"],'%s %d') typeof(D) Names=D(:,1) // строки Age=D(:,2) // числовые значения
Смотрите также
- mclose — закрывает открытые файлы
- meof — проверяет достигнут ли конец файла
- mfprintf — преобразует, форматирует и записывает данные в файл
- fprintfMat — записывает матрицу в файл
- fscanfMat — считывает матрицу из текстового файла
- mget — проверяет числа в двоичом файле и возвращает их в виде десятичных чисел
- mgetstr — считывает символьную строку из файла
- mopen — открывает файл в Scilab'е
- mprintf — converts, formats, and writes data to the main scilab window
- mput — записывает байт или слово в заданном двоичном формате
- mputstr — запись отдельного текста в открытый файл
- mseek — устанавливает текущую позицию в двоичном файле
- mtell — возвращает смещение текущего байта относительно начала файла
- mdelete — удаляет файлы
- преобразование в scanf — спецификации преобразования mscanf, msscanf, mfscanf
Report an issue | ||
<< mfprintf | Файлы: функции ввода/вывода | mget >> |