Please note that the recommended version of Scilab is 2025.0.0. This page might be outdated.
See the recommended documentation of this function
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 >> |