Go to main content

man pages section 3: Basic Library Functions

Exit Print View

Updated: Wednesday, July 27, 2022
 
 

getws(3C)

Name

getws, fgetws - get a wide-character string from a stream

Synopsis

#include <stdio.h> 
#include <widec.h> 

wchar_t *getws(wchar_t *ws);
#include <stdio.h> 
#include <wchar.h> 

wchar_t *fgetws(wchar_t *restrict ws, int n, FILE *restrict stream);

Description

The getws() function reads a string of characters from the standard input stream, stdin, converts these characters to the corresponding wide-character codes, and writes them to the array pointed to by ws, until a newline character is read, converted and transferred to ws or an end-of-file condition is encountered. The wide-character string, ws, is then terminated with a null wide-character code.

If the length of an input line exceeds the size of ws, indeterminate behavior may result. For this reason, it is strongly recommended that the getws() function be avoided in favor of fgetws().


Note -  The use of the getws() function is discouraged since the user cannot specify the length of the buffer passed to getws(). The length of the string read is unlimited. It is possible to overflow this buffer in such a way as to cause applications to fail, or possible system security violations. Applications should use the fgetws() function instead of the obsolescent getws() function.

The fgetws() function reads characters from the stream, converts them to the corresponding wide-character codes, and places them in the wchar_t array pointed to by ws until n−1 characters are read, or until a newline character is read, converted and transferred to ws, or an end-of-file condition is encountered. The wide-character string, ws, is then terminated with a null wide-character code.

If an error occurs, the resulting value of the file position indicator for the stream is indeterminate.

The fgetws() function may mark the st_atime field of the file associated with stream for update. The st_atime field will be marked for update by the first successful execution of fgetc(3C), fgets(3C), fgetwc(3C), fgetws(), fread(3C), fscanf(3C), getc(3C), getchar(3C), gets(3C), or scanf(3C) using stream that returns data not supplied by a prior call to ungetc(3C) or ungetwc(3C).

Return Values

Upon successful completion, getws() and fgetws() return ws. If the stream is at end-of-file, the end-of-file indicator for the stream is set and fgetws() returns a null pointer. For standard-conforming (see standards(7)) applications, if the end-of-file indicator for the stream is set, fgetws() returns a null pointer whether or not the stream is at end-of-file. If a read error occurs, the error indicator for the stream is set and fgetws() returns a null pointer and sets errno to indicate the error.

Errors

See fgetwc(3C) for the conditions that will cause fgetws() to fail.

Attributes

See attributes(7) for descriptions of the following attributes:

ATTRIBUTE TYPE
ATTRIBUTE VALUE
Interface Stability
fgetws() is Standard.
MT-Level
MT-Safe

See Also

fread(3C), ferror(3C), fgetwc(3C), getwc(3C), putws(3C), scanf(3C), ungetc(3C), ungetwc(3C), standards(7), attributes(7)