Namespaces
Variants

fwide

From cppreference.net
< c ‎ | io
Определено в заголовочном файле <wchar.h>
int fwide ( FILE * stream, int mode ) ;
(начиная с C95)

Если mode > 0 , предпринимает попытку сделать stream широкоориентированным. Если mode < 0 , предпринимает попытку сделать stream байт-ориентированным. Если mode == 0 , только запрашивает текущую ориентацию потока.

Если ориентация потока уже была определена (выполнением вывода или предыдущим вызовом fwide ), эта функция ничего не делает.

Содержание

Параметры

stream - указатель на поток ввода-вывода C для модификации или запроса
mode - целочисленное значение больше нуля для установки широкого потока, меньше нуля для установки узкого потока, или ноль только для запроса

Возвращаемое значение

Целое число больше нуля, если поток стал широкоориентированным после этого вызова, меньше нуля, если поток стал байтово-ориентированным после этого вызова, и ноль, если поток не имеет ориентации.

Пример

Следующий код устанавливает и сбрасывает ориентацию потока.

#include <stdio.h>
#include <stdlib.h>
#include <wchar.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);
    c == EOF
        ? printf("\tnarrow character read failed\n")
        : printf("\tnarrow character read '%c'\n", c);
    wint_t wc = fgetwc(fp);
    wc == WEOF
        ? printf("\twide character read failed\n")
        : 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);
}

Возможный вывод:

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 '#'

Ссылки

  • Стандарт C23 (ISO/IEC 9899:2024):
  • 7.29.3.5 Функция fwide (стр.: TBD)
  • Стандарт C17 (ISO/IEC 9899:2018):
  • 7.29.3.5 Функция fwide (стр. 309)
  • Стандарт C11 (ISO/IEC 9899:2011):
  • 7.29.3.5 Функция fwide (стр. 423)
  • Стандарт C99 (ISO/IEC 9899:1999):
  • 7.24.3.5 Функция fwide (стр: 369)

Смотрите также

открывает файл
(функция)
C++ documentation для fwide