getline、getdelim サブルーチン
目的
区切り文字で区切られているレコードをストリームから読み取ります。
ライブラリー
標準ライブラリー (libc.a)
構文
#include <stdio.h>
ssize_t getdelim(char **lineptr, size_t *n, int delimiter, FILE *stream);
ssize_t getline(char **lineptr, size_t *n, FILE *stream); 説明
getdelim 関数は、区切り文字と一致する文字を検出するまで、ストリームから読み取ります。 区切り文字引数は int です。アプリケーションが保証する値は、読み取りプロセスを終了させる、等しい値の符号なし char として表現可能な文字です。 区切り文字引数に他の値がある場合、動作は未定義です。
アプリケーションは、* lineptr が free () 関数に渡すことができる有効な引数であることを確認します。 * n がゼロ以外の場合、アプリケーションは、* lineptr が少なくとも * n バイトのオブジェクトを指すようにする必要があります。
getline () 関数は、「¥ n」文字と等しい区切り文字を持つ getdelim () 関数と同等です。
戻り値
正常終了すると、 getdelim () 関数は、バッファーに書き込まれた文字数を戻します。これには、EOF の前に区切り文字が検出された場合は、区切り文字も含まれます。 そうでない場合は-1を返し、エラーを示すerrnoをセットする。
エラー・コード
以下の場合、関数は失敗することがあります。
| 項目 | 説明 |
|---|---|
| [EINVAL] | lineptr または n は NULL ポインターです |
| [ENOMEM] | 使用可能なメモリーが不十分です。 |
| [EINVAL] | ストリームは有効なファイル記述子ではありません。 |
| [eオーバーフロー] | 区切り文字を検出せずに {SSIZE_MAX} 文字を超える文字が読み取られました。 |