<?xml version="1.0" encoding="UTF-8"?>

<!--
 * Scilab ( https://www.scilab.org/ ) - This file is part of Scilab
 * Copyright (C) 2008 - INRIA
 * ...
 *
 * Copyright (C) 2012 - 2016 - Scilab Enterprises
 *
 * This file is hereby licensed under the terms of the GNU GPL v2.0,
 * pursuant to article 5.3.4 of the CeCILL v.2.1.
 * This file was originally licensed under the terms of the CeCILL v2.1,
 * and continues to be available under such terms.
 * For more information, see the COPYING file which you should have received
 * along with this program.
 *
 -->

<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="mgetstr" xml:lang="ja">

    <refnamediv>

        <refname>mgetstr</refname>

        <refpurpose>ファイルから文字列を読み込む</refpurpose>

    </refnamediv>

    <refsynopsisdiv>

        <title>呼び出し手順</title>

        <synopsis>str = mgetstr(n [,fd])</synopsis>

    </refsynopsisdiv>

    <refsection>

        <title>引数</title>

        <variablelist>

            <varlistentry>

                <term>n</term>

                <listitem>

                    <para>

                        非負の整数: 読み込む文字数.

                    </para>

                </listitem>

            </varlistentry>

            <varlistentry>

                <term>fd</term>

                <listitem>

                    <para>

                        整数:<link linkend="mopen">mopen</link>

                        から返され, 文字を読み込むファイル記述子.

                        <literal>-1</literal>は,

                        直近にオープンされたファイルを意味します.

                    </para>

                </listitem>

            </varlistentry>

            <varlistentry>

                <term>str</term>

                <listitem>

                    <para>読み込まれた文字列</para>

                </listitem>

            </varlistentry>

        </variablelist>

    </refsection>

    <refsection>

        <title>説明</title>

        <para>

            <function>mgetstr</function>関数は,

            ファイルから最大<varname>n</varname>文字を

            読込みます.

            <varname>n</varname>文字を読み込む前に

            ファイル終端に達した場合,

            <function>mgetstr</function>は

            適切に読み込まれた値のみを返します.

            この結果, <function>mgetstr</function>コール時に

            リードカーソルが既にファイル終端にあった場合,

            <varname>n</varname>の設定値によらず

            空の文字列が返されます.

        </para>

    </refsection>

    <refsection>

        <title>例</title>

        <programlisting role="example"><![CDATA[
      fn = SCI + '/ACKNOWLEDGEMENTS'; // ファイルへの絶対パス
      details = fileinfo(fn);         // ファイルの詳細を取得
      len = details(1);               // ファイルの長さを取得
      fd = mopen(fn, 'rt');           // 読込モードでテキストとしてファイルをオープン
      str1 = mgetstr(33, fd)          // fdから33文字読み込む
      length(str1)                    // 33文字読み込む
      str2 = mgetstr(272, fd)         // fdから次の272文字を読み込む
      length(str2)                    // 272文字読込まれた
      mseek(len - 5);                 // ファイル終端から5文字目にジャンプ
      str3 = mgetstr(10, fd)          // 10文字読み込む: 5文字のみ返され, 残りはなし
      length(str3)                    // 5文字あることを確認: 改行はみつかりません :)
      str4 = mgetstr(10, fd)          // 10文字読込み: 空の文字列が返されます
      length(str4)                    // 空の文字列
      mclose(fd);                     // ファイル記述子を閉じる
  ]]></programlisting>

    </refsection>

    <refsection role="see also">

        <title>参照</title>

        <simplelist type="inline">

            <member>

                <link linkend="mclose">mclose</link>

            </member>

            <member>

                <link linkend="meof">meof</link>

            </member>

            <member>

                <link linkend="mfprintf">mfprintf</link>

            </member>

            <member>

                <link linkend="fprintfMat">fprintfMat</link>

            </member>

            <member>

                <link linkend="mfscanf">mfscanf</link>

            </member>

            <member>

                <link linkend="fscanfMat">fscanfMat</link>

            </member>

            <member>

                <link linkend="mget">mget</link>

            </member>

            <member>

                <link linkend="mgetstr">mgetstr</link>

            </member>

            <member>

                <link linkend="mopen">mopen</link>

            </member>

            <member>

                <link linkend="mprintf">mprintf</link>

            </member>

            <member>

                <link linkend="mput">mput</link>

            </member>

            <member>

                <link linkend="mputstr">mputstr</link>

            </member>

            <member>

                <link linkend="mscanf">mscanf</link>

            </member>

            <member>

                <link linkend="mseek">mseek</link>

            </member>

            <member>

                <link linkend="mtell">mtell</link>

            </member>

            <member>

                <link linkend="mdelete">mdelete</link>

            </member>

        </simplelist>

    </refsection>

</refentry>

