other versions
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) 参照):
- 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.41 の一部 である。プロジェクトの説明とバグ報告に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。2010-06-12 | GNU |