GETLINE(3) | Linux Programmer's Manual | GETLINE(3) |
名前
getline, getdelim -区切り文字までの文字列入力を読み込む書式
#include <stdio.h>
ssize_t getline(char ** lineptr , size_t * n , FILE * stream );
ssize_t getdelim(char **lineptr, size_t *n, int delim, FILE *stream);
glibc 向けの機能検査マクロの要件 ( feature_test_macros(7) 参照):
getline(), getdelim():
- glibc 2.10 以降:
- _POSIX_C_SOURCE >= 200809L || _XOPEN_SOURCE >= 700
- glibc 2.10 より前:
- _GNU_SOURCE
説明
getline() は stream から 1 行全てを読み込み、テキストが含まれているバッファのアドレスを *lineptr に格納する。バッファはヌル文字 (\0) で終端される。改行文字が見つかった場合は、改行文字もバッファに格納される。返り値
成功した場合、 getline() と getdelim() は読み込んだ文字数を返す。文字数には区切り文字は含まれるが、終端に使う NULL バイトは含まれない。この値によって、読み込んだ行に含まれる NULL バイトを操作することができる。エラー
- EINVAL
- 引き数が不正である ( n または lineptr が NULL である。もしくは stream が有効でない)。
バージョン
これらの関数は libc 4.6.27 以降で利用可能である。準拠
getline() と getdelim() は、どちらも元は GNU による拡張であったが、 POSIX.1-2008 で標準化された。例
#define _GNU_SOURCE
#include <stdio.h>
#include <stdlib.h>
int
main(void)
{
FILE *fp;
char *line = NULL;
size_t len = 0;
ssize_t read;
fp = fopen("/etc/motd", "r");
if (fp == NULL)
exit(EXIT_FAILURE);
while ((read = getline(&line, &len, fp)) != -1) {
printf("Retrieved line of length %zu :\n", read);
printf("%s", line);
}
free(line);
exit(EXIT_SUCCESS);
}
関連項目
read(2), fgets(3), fopen(3), fread(3), gets(3), scanf(3)この文書について
この man ページは Linux man-pages プロジェクトのリリース 3.51 の一部である。プロジェクトの説明とバグ報告に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。2010-06-12 | GNU |