Spec-Zone.ru › Octave 5

14.2.11 Форматированный ввод

Octave предоставляет функции scanf, fscanf, и sscanf для чтения форматированного ввода. Существуют две формы каждой из этих функций. Одна может использоваться для извлечения векторов данных из файла, а другая более похожа на функции из языка C.

[val, count, errmsg] = fscanf (fid, template, size)
[v1, v2, …, count, errmsg] = fscanf (fid, template, "C")

В первой форме читается из fid в соответствии с template, возвращая результат в матрице val.

Необязательный аргумент size указывает количество данных для чтения и может быть одним из

Inf

Прочитать все возможное, возвращая столбец.

nr

Прочитать до nr элементов, возвращая столбец.

[nr, Inf]

Прочитать все возможное, возвращая матрицу с nr строками. Если количество прочитанных элементов не является точным кратным nr, последний столбец заполняется нулями.

[nr, nc]

Прочитать до nr * nc элементов, возвращая матрицу с nr строками. Если количество прочитанных элементов не является точным кратным nr, последний столбец заполняется нулями.

Если size опущено, используется значение Inf.

Строка возвращается, если template указывает только преобразования символов.

Количество успешно прочитанных элементов возвращается в count.

Если произошла ошибка, errmsg содержит зависящее от системы сообщение об ошибке.

Во второй форме читается из fid в соответствии с template, при этом каждый спецификатор преобразования в template соответствует одному скалярному возвращаемому значению. Эта форма более похожа на функции языка C и совместима с предыдущими версиями Octave. Количество успешных преобразований возвращается в count.

Полное описание синтаксиса строки шаблона см. в разделе «Форматированный ввод» руководства GNU Octave.

См. также: fgets, fgetl, fread, scanf, sscanf, fopen.

[val, count, errmsg] = scanf (template, size)
[v1, v2, …, count, errmsg] = scanf (template, "C")

Это эквивалентно вызову fscanf с fid = stdin.

В настоящее время вызов scanf не имеет смысла в интерактивных программах.

См. также: fscanf, sscanf, printf.

[val, count, errmsg, pos] = sscanf (string, template, size)
[v1, v2, …, count, errmsg] = sscanf (string, template, "C")

Это похоже на fscanf, за исключением того, что символы берутся из строки string, а не из потока.

Достижение конца строки обрабатывается как условие конца файла. В дополнение к значениям, возвращаемым fscanf, индекс следующего символа для чтения возвращается в pos.

См. также: fscanf, scanf, sprintf.

Вызовы scanf внешне похожи на вызовы printf, в том, что произвольные аргументы читаются под управлением строки шаблона. Хотя синтаксис спецификаций преобразования в шаблоне очень похож на синтаксис спецификаций преобразования для printf, интерпретация шаблона ориентирована больше на ввод в свободном формате и простое сопоставление с образцом, а не на форматирование фиксированных полей. Например, большинство scanf преобразований пропускают любое количество «пробелов» (включая пробелы, табуляции и символы новой строки) во входном файле, и нет понятия точности для числовых преобразований ввода, как это есть для соответствующих преобразований вывода. Обычно ожидается, что неразрывные символы в шаблоне точно соответствуют символам во входном потоке.

При возникновении несоответствия scanf возвращается немедленно, оставляя первый несовпадающий символ в качестве следующего символа для чтения из потока, и scanf возвращает все элементы, которые были успешно преобразованы.

Функции форматированного ввода используются не так часто, как функции форматированного вывода. Отчасти это связано с необходимостью соблюдения осторожности при их использовании. Другая причина заключается в том, что восстановить после ошибки сопоставления трудно.

© 1996–2022 The Octave Project Developers
Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies.
Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one.
Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions.
https://docs.octave.org/v5.2.0/Formatted-Input.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API