From 754bbf7a25a8dda49b5d08ef0d0443bbf5af0e36 Mon Sep 17 00:00:00 2001 From: Craig Jennings Date: Sun, 7 Apr 2024 13:41:34 -0500 Subject: new repository --- devdocs/c/io%2Ffwide.html | 97 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100644 devdocs/c/io%2Ffwide.html (limited to 'devdocs/c/io%2Ffwide.html') diff --git a/devdocs/c/io%2Ffwide.html b/devdocs/c/io%2Ffwide.html new file mode 100644 index 00000000..4918f246 --- /dev/null +++ b/devdocs/c/io%2Ffwide.html @@ -0,0 +1,97 @@ +

fwide

Defined in header <wchar.h>
int fwide( FILE *stream, int mode );
+
(since C95)

If mode > 0, attempts to make stream wide-oriented. If mode < 0, attempts to make stream byte-oriented. If mode==0, only queries the current orientation of the stream.

+

If the orientation of the stream has already been decided (by executing output or by an earlier call to fwide), this function does nothing.

+

Parameters

+ + +
stream - pointer to the C I/O stream to modify or query
mode - integer value greater than zero to set the stream wide, less than zero to set the stream narrow, or zero to query only

Return value

An integer greater than zero if the stream is wide-oriented after this call, less than zero if the stream is byte-oriented after this call, and zero if the stream has no orientation.

+

Example

+

The following code sets and resets the stream orientation.

+
#include <wchar.h>
+#include <stdio.h>
+#include <stdlib.h>
+ 
+void show_orientation(int n)
+{
+    n < 0 ? puts("\tnarrow orientation"):
+    n > 0 ? puts("\twide orientation"):
+            puts("\tno orientation");
+}
+ 
+void try_read(FILE* fp)
+{
+    int c = fgetc(fp);
+    if(c == EOF)
+        puts("\tnarrow character read failed");
+    else
+        printf("\tnarrow character read '%c'\n", c);
+ 
+    wint_t wc = fgetwc(fp);
+    if(wc == WEOF)
+        puts("\twide character read failed");
+    else
+        printf("\twide character read '%lc'\n", wc);
+}
+ 
+int main(void)
+{
+    enum fwide_orientation { narrow = -1, query, wide };
+ 
+    FILE* fp = fopen("main.cpp", "r");
+    if (!fp)
+    {
+        perror("fopen() failed");
+        return EXIT_FAILURE;
+    }
+ 
+    puts("1) A newly opened stream has no orientation.");
+    show_orientation(fwide(fp, query));
+ 
+    puts("2) Establish byte orientation.");
+    show_orientation(fwide(fp, narrow));
+    try_read(fp);
+ 
+    puts("3) Only freopen() can reset stream orientation.");
+    if (freopen("main.cpp", "r", fp) == NULL)
+    {
+       perror("freopen() failed");
+       return EXIT_FAILURE;
+    }
+ 
+    puts("4) A reopened stream has no orientation.");
+    show_orientation(fwide(fp, query));
+ 
+    puts("5) Establish wide orientation.");
+    show_orientation(fwide(fp, wide));
+    try_read(fp);
+ 
+    fclose(fp);
+}

Possible output:

+
1) A newly opened stream has no orientation.
+        no orientation
+2) Establish byte orientation.
+        narrow orientation
+        narrow character read '#'
+        wide character read failed
+3) Only freopen() can reset stream orientation.
+4) A reopened stream has no orientation.
+        no orientation
+5) Establish wide orientation.
+        wide orientation
+        narrow character read failed
+        wide character read '#'

References

See also

+ +
+
(C11)
opens a file
(function)
C++ documentation for fwide
+

+ © cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
+ https://en.cppreference.com/w/c/io/fwide +

+
-- cgit v1.2.3