Espacios de nombres
Variantes
Acciones

getline, getwline, getdelim, getwdelim

De cppreference.com
< c‎ | experimental‎ | dynamic
Definido en el archivo de encabezado <stdio.h>
ssize_t getline(char **punterolinea, size_t *n, FILE *canal);
(1) (memoria dinamica TR)
ssize_t getwline(wchar_t **punterolinea, size_t *n, FILE *canal);
(2) (memoria dinamica TR)
ssize_t getdelim(char ** restrict punterolinea, size_t * restrict n,
                 int delimitador, FILE *canal);
(3) (memoria dinamica TR)
ssize_t getwdelim(wchar_t ** restrict punterolinea, size_t * restrict n,
                 wint_t delimitador, FILE * canal);
(4) (memoria dinamica TR)
1) Se comporta como getdelim(punterolinea, n, '\n', canal)
2) Se comporta como getwdelim(punterolinea, n, L'\n', canal)
3) Lee el canal como si fuera fgetc, hasta que se encuentra el delimitador, almacenando los caracteres en el búfer de tamaño *n apuntado por *punterolinea, aumentando automáticamente su tamaño como si fuera por realloc para que se ajuste a toda la entrada, incluyendo el delimitador, y añadiendo un terminador nulo. *punterolinea puede ser nulo, en cuyo caso *n es ignorado y getline asigna un nuevo búfer como si fuera por malloc. El comportamiento es indefinido si el delimitador tiene un valor que está fuera del rango de caracteres sin signo o EOF.
4) Igual que (3), excepto que los caracteres son leídos como si fueran por fgetwc y ese delimitador debe ser un wchar_t o WEOF válido.

Si *punterolinea no es nulo, el comportamiento es indefinido si *punterolinea no es un puntero que puede ser pasado a free o si *n es menor que el tamaño de la memoria asignada apuntada por *punterolinea

Como todas las funciones de la memoria dinámica TR, getline sólo se garantiza que está disponible si __STDC_ALLOC_LIB__ se define mediante la implementación y si el usuario define __STDC_WANT_LIB_EXT2__ a la constante entera 1 antes de incluir stdio.h.

Contenido

[editar] Parameters

punterolinea - puntero a un puntero al búfer inicial o a un puntero nulo
n - puntero al tamaño de la memoria inicial
delimitador - el carácter delimitador
canal - canal de entrada válido, abierto por fopen

[editar] Return value

El número de caracteres almacenados en el búfer, incluyendo el delimitador, pero excluyendo el terminador nulo.

En caso de error, retorna -1 y establece feof o ferror en canal.

[editar] Observaciones

Estas funciones son idénticas a sus versiones POSIX excepto que está permitido, pero no es necesario configurar errno en caso de error.

[editar] Ejemplo

#ifdef __STDC_ALLOC_LIB__
#define __STDC_WANT_LIB_EXT2__ 1
#else
#define _POSIX_C_SOURCE 200809L
#endif
 
#include <stdio.h>
#include <stdlib.h>
void get_y_or_n(void)
{
    char *respuesta = NULL;
    size_t len;
    printf("¿Continuar? [s] n: ");
    if((getline(&respuesta, &len, stdin) < 0) || (len && respuesta[0] == 'n')) {
        free(respuesta);
        exit(0);
    }
    free(respuesta);
    return;
}
int main(void) 
{
    get_y_or_n();
}

Salida:

¿Continuar? [s] n:

[editar] Véase también

recibe una cadena de caracteres a partir de una secuencia de archivo
Original:
gets a character string from a file stream
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

(función) [editar]
lee una cadena de caracteres de stdin
Original:
reads a character string from stdin
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

(función) [editar]
obtiene una cadena amplia de una secuencia de archivo
Original:
gets a wide string from a file stream
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

(función) [editar]
asigna memoria
(función) [editar]