getline(3) - wariua/manpages-ko GitHub Wiki

NAME

getline, getdelim - ๊ตฌ๋ถ„์ž ์‚ฌ์šฉ ๋ฌธ์ž์—ด ์ž…๋ ฅ

SYNOPSIS

#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
glibc 2.10 ์ „:
_GNU_SOURCE

DESCRIPTION

getline()์€ stream์œผ๋กœ๋ถ€ํ„ฐ ํ–‰ ํ•˜๋‚˜๋ฅผ ํ†ต์งธ๋กœ ์ฝ์–ด์„œ ๊ทธ ํ…์ŠคํŠธ๋ฅผ ๋‹ด์€ ๋ฒ„ํผ์˜ ์ฃผ์†Œ๋ฅผ *lineptr์— ์ €์žฅํ•œ๋‹ค. ๊ทธ ๋ฒ„ํผ๋Š” ๋„๋กœ ๋๋‚˜๋ฉฐ ๊ฐœํ–‰ ๋ฌธ์ž๊ฐ€ ์žˆ์œผ๋ฉด ๊ทธ๋Œ€๋กœ ํฌํ•จํ•œ๋‹ค.

ํ˜ธ์ถœ ์ „์— *lineptr์ด NULL๋กœ ์„ค์ •๋˜์–ด ์žˆ๊ณ  *n์ด 0์œผ๋กœ ์„ค์ •๋˜์–ด ์žˆ์œผ๋ฉด ํ–‰์„ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ ๋ฒ„ํผ๋ฅผ getline()์—์„œ ํ• ๋‹นํ•˜๊ฒŒ ๋œ๋‹ค. ์‚ฌ์šฉ์ž ํ”„๋กœ๊ทธ๋žจ์—์„œ ์ด ๋ฒ„ํผ๋ฅผ ํ•ด์ œํ•ด์•ผ ํ•˜๋Š”๋ฐ, getline()์ด ์‹คํŒจํ•œ ๊ฒฝ์šฐ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ด๋‹ค.

๊ทธ๋ ‡์ง€ ์•Š๊ณ  getline() ํ˜ธ์ถœ ์ „์— *lineptr์ด malloc(3)์œผ๋กœ ํ• ๋‹นํ•œ *n ๋ฐ”์ดํŠธ ํฌ๊ธฐ ๋ฒ„ํผ์— ๋Œ€ํ•œ ํฌ์ธํ„ฐ๋ฅผ ๋‹ด๊ณ  ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค. ๊ทธ ๋ฒ„ํผ๊ฐ€ ํ–‰์„ ๋‹ด๊ธฐ์— ์ถฉ๋ถ„ํžˆ ํฌ์ง€ ์•Š์œผ๋ฉด getline()์—์„œ realloc(3)์œผ๋กœ ํฌ๊ธฐ๋ฅผ ์กฐ์ •ํ•˜๊ณ  *lineptr๊ณผ *n์„ ์ ์ ˆํžˆ ๊ฐฑ์‹ ํ•œ๋‹ค.

์–ด๋А ๊ฒฝ์šฐ์—๋“  ํ˜ธ์ถœ ์„ฑ๊ณต ์‹œ์— *lineptr๊ณผ *n์ด ๊ฐ๊ฐ ๋ฒ„ํผ ์ฃผ์†Œ์™€ ํ• ๋‹น ํฌ๊ธฐ๋ฅผ ๋‚˜ํƒ€๋‚ด๋„๋ก ๊ฐฑ์‹ ๋œ๋‹ค.

getdelim()์€ getline()์ฒ˜๋Ÿผ ๋™์ž‘ํ•˜๋˜ delimiter ์ธ์ž๋กœ ๊ฐœํ–‰ ์™ธ์˜ ํ–‰ ๊ตฌ๋ถ„์ž๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. getline()์—์„œ์ฒ˜๋Ÿผ ์ž…๋ ฅ์— ๊ตฌ๋ถ„์ž ๋ฌธ์ž ์—†์ด ํŒŒ์ผ ๋์— ๋„๋‹ฌํ–ˆ์œผ๋ฉด ๊ตฌ๋ถ„์ž ๋ฌธ์ž๊ฐ€ ๋ฒ„ํผ์— ์ถ”๊ฐ€๋˜์ง€ ์•Š๋Š”๋‹ค.

RETURN VALUE

์„ฑ๊ณต ์‹œ getline()๊ณผ getdelim()์€ ์ฝ์€ ๋ฌธ์ž ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š”๋ฐ, ๊ตฌ๋ฌธ ๋ฌธ์ž๋Š” ํฌํ•จํ•˜๊ณ  ์ข…๋ฃŒ์šฉ ๋„ ๋ฐ”์ดํŠธ('\0')๋Š” ์ œ์™ธํ•œ๋‹ค. ์ด ๊ฐ’์„ ์ด์šฉํ•˜๋ฉด ์ฝ์€ ํ–‰์— ๋„ ๋ฐ”์ดํŠธ๊ฐ€ ํฌํ•จ๋œ ๊ฒฝ์šฐ๋ฅผ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๋‹ค.

๋‘ ํ•จ์ˆ˜ ๋ชจ๋‘ ํ–‰์„ ์ฝ๋Š” ๋ฐ ์‹คํŒจํ•˜๋ฉด (ํŒŒ์ผ ๋ ์ƒํƒœ ํฌํ•จ) -1์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ์˜ค๋ฅ˜ ๋ฐœ์ƒ ์‹œ ์˜ค๋ฅ˜ ์›์ธ์„ ๋‚˜ํƒ€๋‚ด๋„๋ก errno๋ฅผ ์„ค์ •ํ•œ๋‹ค.

ERRORS

EINVAL
์ž˜๋ชป๋œ ์ธ์ž. (n์ด๋‚˜ lineptr์ด NULL์ด๊ฑฐ๋‚˜, stream์ด ์œ ํšจํ•˜์ง€ ์•Š์Œ.)
ENOMEM
ํ–‰ ๋ฒ„ํผ ํ• ๋‹น ๋‚ด์ง€ ์žฌํ• ๋‹น ์‹คํŒจ.

ATTRIBUTES

์ด ์ ˆ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์šฉ์–ด๋“ค์— ๋Œ€ํ•œ ์„ค๋ช…์€ attributes(7)๋ฅผ ๋ณด๋ผ.

์ธํ„ฐํŽ˜์ด์Šค ์†์„ฑ ๊ฐ’
getline(), getdelim() ์Šค๋ ˆ๋“œ ์•ˆ์ „์„ฑ MT-Safe

CONFORMING TO

getline()๊ณผ getdelim() ๋ชจ๋‘ ์›๋ž˜๋Š” GNU ํ™•์žฅ์ด์—ˆ๋‹ค. POSIX.1-2008์—์„œ ํ‘œ์ค€ํ™”๋˜์—ˆ๋‹ค.

EXAMPLE

#define _GNU_SOURCE
#include <stdio.h>
#include <stdlib.h>

int
main(int argc, char *argv[])
{
    FILE *stream;
    char *line = NULL;
    size_t len = 0;
    ssize_t nread;

    if (argc != 2) {
        fprintf(stderr, "Usage: %s <file>\n", argv[0]);
        exit(EXIT_FAILURE);
    }

    stream = fopen(argv[1], "r");
    if (stream == NULL) {
        perror("fopen");
        exit(EXIT_FAILURE);
    }

    while ((nread = getline(&line, &len, stream)) != -1) {
        printf("Retrieved line of length %zu:\n", nread);
        fwrite(line, nread, 1, stdout);
    }

    free(line);
    fclose(stream);
    exit(EXIT_SUCCESS);
}

SEE ALSO

read(2), fgets(3), fopen(3), fread(3), scanf(3)


2019-03-06

โš ๏ธ **GitHub.com Fallback** โš ๏ธ