getline, getwline, getdelim, getwdelim
| 
           
           Defined in header
            
         
            <stdio.h>
           
           | 
         ||
| (1) | (dynamic memory TR) | |
| (2) | (dynamic memory TR) | |
| (3) | (dynamic memory TR) | |
| (4) | (dynamic memory TR) | |
        stream
       
       as if by
       
        
         fgetc
        
       
       , until
       
        delimiter
       
       is encountered, storing the characters in the buffer of size
       
        *n
       
       pointed to by
       
        *lineptr
       
       , automatically increasing its size as if by
       
        
         realloc
        
       
       to fit the entire input, including the delimiter, and adding a null terminator.
       
        *lineptr
       
       may be null, in which case
       
        *n
       
       is ignored and
       
        getline
       
       allocates a new buffer as if by
       
        
         malloc
        
       
       .
The behavior is undefined if
       
        delimiter
       
       has a value that is outside the range of
       
        unsigned char
       
       or
       
        
         EOF
        
       
       .
      
        delimiter
       
       must be a valid
       
        wchar_t
       
       or
       
        WEOF
       
       .
      
       If
       
        *lineptr
       
       is not null, the behavior is undefined if
       
        *lineptr
       
       is not a pointer that can be passed to
       
        
         free
        
       
       or if
       
        *n
       
       is less than the size of the allocated memory pointed to by
       
        *lineptr
       
      
       As all functions from Dynamic Memory TR,
       
        getline
       
       is only guaranteed to be available if
       
        
         __STDC_ALLOC_LIB__
        
       
       is defined by the implementation and if the user defines
       
        
         __STDC_WANT_LIB_EXT2__
        
       
       to the integer constant
       
        
         
          1
         
        
       
       before including
       
        stdio.h
       
       .
      
Parameters
| lineptr | - | pointer to a pointer to the initial buffer or to a null pointer | 
| n | - | pointer to the size of the initial buffer | 
| delimiter | - | the delimiter character | 
| stream | - | valid input stream, opened by fopen | 
Return value
The number of characters stored in the buffer, including the delimiter, but excluding the null terminator.
       On error, returns
       
        
         
          -
         
         
          1
         
        
       
       and sets
       
        
         feof
        
       
       or
       
        
         ferror
        
       
       on
       
        stream
       
       .
      
Notes
These functions are identical to their POSIX versions except that it is allowed, but not required to set errno on error.
Example
#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 *response = NULL; size_t len; printf("Continue? [y] n: "); if((getline(&response, &len, stdin) < 0) || (len && response[0] == 'n')) { free(response); exit(0); } free(response); return; } int main(void) { get_y_or_n(); }
Output:
Continue? [y] n:
See also
| 
         gets a character string from a file stream
          (function)  | 
       |
| 
          
           
            
             
              (removed in C11)
             
            
            
             
              (C11)
             
            
           
           
          | 
        
         reads a character string from
         
          stdin
         
         (function)  | 
       
| 
          
           
            
             
              (C95)
             
            
           
           
          | 
        
         gets a wide string from a file stream
          (function)  | 
       
| 
         allocates memory
          (function)  |