![]() Chapter Contents |
![]() Previous |
![]() Next |
| fgets |
| Portability: | ISO/ANSI C conforming, UNIX compatible |
| SYNOPSIS | |
| DESCRIPTION | |
| RETURN VALUE | |
| EXAMPLE | |
| RELATED FUNCTIONS | |
| SEE ALSO |
| SYNOPSIS |
#include <stdio.h> char *fgets(char *str, int n, FILE *f);
| DESCRIPTION |
fgets
reads a line of data or up to
n-1
characters
(whichever is less) from the stream associated with the
FILE
object addressed by
f
, and
it stores the input in the area addressed by
str
. The area must be large enough to contain
n
characters.
str
addresses an
array. For a stream accessed as text, characters are read into the array
until
n-1
characters have been read, a
complete line of data have been read, or end of file has been reached.
For a stream accessed as binary, characters are read
until a physical new-line character is encountered,
n-1
characters have been read, or end of file has been reached.
fgets
adds a null
character ('\0') following the last character read into the area addressed
by
str
.
| RETURN VALUE |
fgets
returns
str
if successful. If end of file
or an error occurs,
fgets
returns
NULL
.
| EXAMPLE |
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define BUFSIZE 10
main()
{
char *buffer;
int position;
puts("Please enter a long line of input.");
buffer = malloc(BUFSIZE);
if (!buffer) exit(EXIT_FAILURE);
*buffer = '\0'; /* Initially buffer is empty. */
position = 0; /* Read into start of buffer. */
for (;;) {
/* Read new data to last part of buffer. */
if (!fgets(buffer+position, BUFSIZE, stdin)) break;
/* Stop reading if we've read the whole line. */
if (buffer[strlen(buffer)-1] == '\n') break;
/* Make the buffer bigger so we can read again. */
buffer = realloc(buffer, strlen(buffer)+BUFSIZE);
if (!buffer) exit(EXIT_FAILURE);
/* Start reading after the last input character. */
position = strlen(buffer);
}
if (ferror(stdin)) exit(EXIT_FAILURE);
if (!*buffer)
puts("There was no input data.");
else
printf("You entered a %d-character line:\n%s",
strlen(buffer), buffer);
free(buffer);
exit(EXIT_SUCCESS);
}
| RELATED FUNCTIONS |
| SEE ALSO |
![]() Chapter Contents |
![]() Previous |
![]() Next |
![]() Top of Page |
Copyright © 2001 by SAS Institute Inc., Cary, NC, USA. All rights reserved.