8a16f2373c96e3263fed5f39fd6d328230c2e427
[scilab.git] / scilab / modules / fileio / help / ru_RU / mfscanf.xml
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!--
3  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
4  * Copyright (C) 2008 - INRIA
5  * ...
6  * 
7  * This file must be used under the terms of the CeCILL.
8  * This source file is licensed as described in the file COPYING, which
9  * you should have received as part of this distribution.  The terms
10  * are also available at    
11  * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
12  *
13  -->
14 <refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns4="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="mfscanf" xml:lang="ru">
15     <refnamediv>
16         <refname>mfscanf</refname>
17         <refpurpose>
18             считывает входные данные из потока, указанного указателем потока (интерфейс с C-функцией fscanf)
19         </refpurpose>
20     </refnamediv>
21     <refnamediv xml:id="mscanf">
22         <refname>mscanf</refname>
23         <refpurpose>
24             считывает входные данные с устройства стандартного ввода данных (интерфейс с C-функцией scanf)
25         </refpurpose>
26     </refnamediv>
27     <refnamediv xml:id="msscanf">
28         <refname>msscanf</refname>
29         <refpurpose>
30             считывает свои входные данные из символьной строки (интерфейс с C-функцией sscanf)
31         </refpurpose>
32     </refnamediv>
33     <refsynopsisdiv>
34         <title>Последовательность вызова</title>
35         <synopsis>
36             [n, v_1,..., v_m] = mfscanf([niter,]fd, format)
37             L = mfscanf([niter,] fd,format)
38             
39             [n, v_1,..., v_m] = mscanf([niter,] format)
40             L = mscanf([niter,]format)
41             
42             [n, v_1,..., v_m] = msscanf([niter,]str, format)
43             L = msscanf([niter,] str, format)
44         </synopsis>
45     </refsynopsisdiv>
46     <refsection>
47         <title>Аргументы</title>
48         <variablelist>
49             <varlistentry>
50                 <term>format</term>
51                 <listitem>
52                     <para>
53                         Scilab-строка, описывающая формат, который нужно использовать для 
54                         записи оставшихся операндов. Операнд <varname>format</varname> 
55                         следует, как можно ближе синтаксису операндов формата C-функции 
56                         <function>printf</function>, как описано в
57                         <link linkend="scanf_conversion">scanf_conversion</link>.
58                     </para>
59                 </listitem>
60             </varlistentry>
61             <varlistentry>
62                 <term>fd</term>
63                 <listitem>
64                     <para>
65                         положительное целое число: файловый дескриптор, возвращённый функцией <function>mopen</function>. Значение -1 относится к последнему открытому файлу.
66                     </para>
67                 </listitem>
68             </varlistentry>
69             <varlistentry>
70                 <term>str</term>
71                 <listitem>
72                     <para>Scilab-строка или вектор строк.</para>
73                 </listitem>
74             </varlistentry>
75             <varlistentry>
76                 <term>niter</term>
77                 <listitem>
78                     <para>
79                         целое число: сколько раз использовать <varname>format</varname>.
80                     </para>
81                 </listitem>
82             </varlistentry>
83             <varlistentry>
84                 <term>n</term>
85                 <listitem>
86                     <para>
87                         целое число: количество данных, которое необходимо прочитать или -1, если конец файла был достигнут прежде, чем что-либо из данных было прочитано.
88                     </para>
89                 </listitem>
90             </varlistentry>
91             <varlistentry>
92                 <term>v_i</term>
93                 <listitem>
94                     <para>
95                         каждая из функций считывает символы, интерпретирует их в 
96                         соответствии с форматом <varname>format</varname> и сохраняет 
97                         результаты в своих выходных аргументах. Если выходных аргументов 
98                         указано больше, чем <varname>n</varname>, то последние аргументы 
99                         <varname>v_n+1, ..., v_m</varname> устанавливаются пустыми 
100                         матрицами.
101                     </para>
102                 </listitem>
103             </varlistentry>
104             <varlistentry>
105                 <term>L</term>
106                 <listitem>
107                     <para>
108                         если все данные однородны, то они сохраняются в уникальном 
109                         векторе, который возвращается, в противном случае 
110                         последовательности одного типа данных сохраняются в матрицах, а 
111                         возвращается матричноориентированный типизированный список <literal>mlist</literal> (с типом <literal>cblock</literal>), содержащий все построенные матрицы.
112                     </para>
113                 </listitem>
114             </varlistentry>
115         </variablelist>
116     </refsection>
117     <refsection>
118         <title>Описание</title>
119         <para>
120             Функция <function>mfscanf</function> считывает символы из потока
121             <varname>fd</varname>.
122         </para>
123         <para>
124             Функция <function>mscanf</function> считывает символы из окна Scilab.
125         </para>
126         <para>
127             Функция <function>msscanf</function> считывает символы из Scilab-строки
128             <varname>str</varname>.
129         </para>
130         <para>
131             Необязательный аргумента<varname>niter</varname> определяет сколько раз 
132             использовать формат. Одна итерация формирует одну строку в выходной 
133             матрице. Если <code>niter==-1</code>, то функция выполняет итерации до 
134             конца файла. Значение <varname>niter</varname> по умолчанию равно 1.
135         </para>
136         <para>Комментарии о точности:</para>
137         <para>
138             <function>mfscanf</function> основана на C-функции      
139             <function>fscanf</function>. Если вы используете 
140             <literal>'%f'</literal>, <literal>'%g'</literal>, 
141             <literal>'%e'</literal> в качестве формата, то ваши данные будут 
142             приведены в тип плавающей запятой и возвращены в Scilab-переменную.
143         </para>
144         <para>
145             Если эта Scilab-переменная является числом двойной точности, то вы 
146             можете получить некоторые ошибки по точности. В этом случае лучше 
147             использовать формат <literal>'%lg'</literal>.
148         </para>
149     </refsection>
150     <refsection>
151         <title>Примеры</title>
152         <programlisting role="example"><![CDATA[ 
153 //----------------------------------------------------------
154 //--    Простое использование                                        --
155 //----------------------------------------------------------
156 s='1 1.3'  // строка
157 [n,a,b]=msscanf(s,"%i %e")
158 L=msscanf(s,"%i %e")
159  
160 //----------------------------------------------------------
161 //--    Примеры форматов
162 //----------------------------------------------------------
163  
164 msscanf(" 12\n",'%c%c%c%c') // сканирование символов
165  
166 msscanf('0xabc','%x') // сканирование в шестнадцатеричном формате
167  
168 msscanf('012345abczoo','%[0-9abc]%s')  //обозначение []
169  
170 // считывание чисел типов float и double
171 msscanf('4345.988','%g')-4345.988 // сканирование числа float
172 msscanf('4345.988','%lg')-4345.988 // сканирование числа double
173  
174 //----------------------------------------------------------
175 //--    сканирование файлов с многострочными данными
176 //----------------------------------------------------------
177 // создание файла с данными
178 u=mopen(TMPDIR+'/foo','w');
179 t=(0:0.1:%pi)';mfprintf(u,"%6.3f %6.3f\n",t,sin(t))
180 mclose(u);
181
182 // открытие файла на чтение
183 u=mopen(TMPDIR+'/foo','r');
184 // чтение файла строка за строкой
185 [n,a,b]=mfscanf(u,'%e %e') // первая строка, используя синтаксис множества данных с левой стороны
186 l=mfscanf(u,'%e %e')       // вторая строка, используя синтаксис одной переменной с левой стороны
187
188 //использование niter для чтения ещё пяти строк
189 l=mfscanf(5,u,'%e %e')  
190  
191 // использование niter=-1 для чтения до конца файла
192 l=mfscanf(-1,u,'%e %e')  
193
194 // закрытие файла
195 mclose(u);
196
197 //------------------------------------------------------------------
198 //-- сканирование векторов с многострочными строковыми значениями --
199 //------------------------------------------------------------------
200 //использование niter для сканирования вектора строковых значений
201 [n,Names,Ages]=msscanf(-1,["Alain 19";"Pierre 15";"Tom 12"],'%s %d')
202 D=msscanf(-1,["Alain 19";"Pierre 15";"Tom 12"],'%s %d')
203 typeof(D)
204 Names=D(:,1) // строки
205 Age=D(:,2)   // числовые значения
206  ]]></programlisting>
207     </refsection>
208     <refsection role="see also">
209         <title>Смотрите также</title>
210         <simplelist type="inline">
211             <member>
212                 <link linkend="mclose">mclose</link>
213             </member>
214             <member>
215                 <link linkend="meof">meof</link>
216             </member>
217             <member>
218                 <link linkend="mfprintf">mfprintf</link>
219             </member>
220             <member>
221                 <link linkend="fprintfMat">fprintfMat</link>
222             </member>
223             <member>
224                 <link linkend="fscanfMat">fscanfMat</link>
225             </member>
226             <member>
227                 <link linkend="mget">mget</link>
228             </member>
229             <member>
230                 <link linkend="mgetstr">mgetstr</link>
231             </member>
232             <member>
233                 <link linkend="mopen">mopen</link>
234             </member>
235             <member>
236                 <link linkend="mprintf">mprintf</link>
237             </member>
238             <member>
239                 <link linkend="mput">mput</link>
240             </member>
241             <member>
242                 <link linkend="mputstr">mputstr</link>
243             </member>
244             <member>
245                 <link linkend="mseek">mseek</link>
246             </member>
247             <member>
248                 <link linkend="mtell">mtell</link>
249             </member>
250             <member>
251                 <link linkend="mdelete">mdelete</link>
252             </member>
253             <member>
254                 <link linkend="scanf_conversion">преобразование в scanf</link>
255             </member>
256         </simplelist>
257     </refsection>
258 </refentry>
259