Namespaces
Variants

fgetwc, getwc

С ru.cppreference.net
< c | io
 
 
Файловый ввод/вывод
Типы и объекты
        
Функции
Доступ к файлам
(C95)
Неформатированный ввод/вывод
(C95)(C95)
(C95)
(C95)(C95)
(C95)
(C95)

Форматированный ввод
Прямой ввод/вывод
Форматированный вывод
Позиционирование в файле
Обработка ошибок
Операции с файлами
 
Определено в заголовке <wchar.h>
wint_t fgetwc( FILE* stream );
(since C95)
wint_t getwc( FILE* stream );
(since C95)

Читает следующий широкий символ из заданного входного потока. getwc() может быть реализован как макрос и может вычислять stream более одного раза.

Параметры

stream - из которого читать широкий символ

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

Следующий широкий символ из потока или WEOF в случае ошибки.

Если ошибка вызвана условием конца файла, дополнительно устанавливает индикатор eof (см. feof()) для stream. Если ошибка вызвана какой-либо другой причиной, устанавливает индикатор error (см. ferror()) для stream.

Если произошла ошибка кодировки, дополнительно устанавливает errno в EILSEQ.

Пример

#include <errno.h>
#include <locale.h>
#include <stdio.h>
#include <stdlib.h>
#include <wchar.h>

int main(void)
{
    setlocale(LC_ALL, "en_US.utf8");
    FILE* fp = fopen("fgetwc.dat", "w");
    if(!fp)
    {
        perror("Can't open file for writing");
        return EXIT_FAILURE;
    }
    fputs("кот\n", fp);
    fclose(fp);

    fp = fopen("fgetwc.dat", "r");
    if (!fp)
    {
        perror("Can't open file for reading");
        return EXIT_FAILURE;
    }
    wint_t wc;
    errno = 0;
    while ((wc = fgetwc(fp)) != WEOF)
        putwchar(wc);

    if (ferror(fp))
    {
        if (errno == EILSEQ)
            puts("Character encoding error while reading.");
        else
            puts("I/O error when reading");
    }
    else if (feof(fp))
        puts("End of file reached successfully");

    fclose(fp);
}

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

кот

Ссылки

  • Стандарт C23 (ISO/IEC 9899:2024):
  • 7.29.3.1 Функция fgetwc (стр.: TBD)
  • 7.29.3.6 Функция getwc (стр.: TBD)
  • Стандарт C17 (ISO/IEC 9899:2018):
  • 7.29.3.1 Функция fgetwc (стр.: 307-308)
  • 7.29.3.6 Функция getwc (стр.: 309)
  • Стандарт C11 (ISO/IEC 9899:2011):
  • 7.29.3.1 Функция fgetwc (стр.: 421-422)
  • 7.29.3.6 Функция getwc (стр.: 424)
  • Стандарт C99 (ISO/IEC 9899:1999):
  • 7.29.3.1 Функция fgetwc (стр.: 367)
  • 7.29.3.6 Функция getwc (стр.: 369)

См. также

получает символ из файлового потока
(функция)
(C95)
получает широкую строку из файлового потока
(функция)
записывает широкий символ в файловый поток
(функция)
возвращает широкий символ обратно в файловый поток
(функция)