C ++ vfwscanf () - Стандартная библиотека C ++

Функция vfwscanf () в C ++ используется для чтения строки широких символов из файлового потока.

Функция vfwscanf () определена в заголовочном файле.

vfwscanf () прототип

 int vfwscanf (FILE * поток, const wchar_t * format, va_list vlist);

Функция vfwscanf () считывает данные из потока файлового потока и сохраняет значения в соответствующих местах, как определено vlist.

vfwscanf () Параметры

  • stream: входной файловый поток для чтения данных.
  • формат: указатель на строку широких символов с завершающим нулем, которая указывает, как читать ввод. Он состоит из спецификаторов формата, начинающихся с%.
    Строка формата состоит из следующих частей:
    • Символы без пробелов, кроме%, каждый из которых использует один идентичный символ из входного потока. Это может привести к сбою функции, если следующий символ в потоке не окажется равным.
    • Пробельный символ: все следующие друг за другом пробельные символы рассматриваются как один пробельный символ. Далее, ' n', ' t' и '' считаются одинаковыми.
    • Спецификация преобразования: имеет следующий формат:
      • Начальный символ%, указывающий начало
      • Необязательный *, называемый символом подавления присваивания. Если этот символ присутствует, vfwscanf () не присваивает результат ни одному принимающему аргументу.
      • Необязательное положительное целое число, указывающее максимальную ширину поля. Он определяет максимальное количество символов, которое разрешено использовать vfwscanf () при выполнении преобразования, указанного в текущей спецификации преобразования.
      • Необязательный модификатор длины, определяющий размер принимающего аргумента.
      • Спецификатор формата преобразования.
    Спецификаторы формата
    Описатель формата Описание
    % Соответствует буквальному%
    c Соответствует одному или нескольким символам. Если ширина определена, точно соответствует ширине символов.
    s Соответствует последовательным непробельным символам. Если ширина определена, соответствует точно символам ширины или до тех пор, пока не будет найден первый пробел.
    (набор) Соответствует непустой последовательности символов из данного набора символов. Если присутствует в начале набора, то совпадают все символы, не входящие в набор.
    d Соответствует десятичному целому числу.
    я Соответствует целому числу.
    о Соответствует восьмеричному целому числу без знака.
    X или x Соответствует шестнадцатеричному целому числу без знака.
    ты Соответствует десятичному целому числу без знака.
    A или a, E или e, F или f, G или g Соответствует числу с плавающей запятой.
    п Возвращает количество прочитанных символов.
    п Соответствует последовательности символов, определенной реализацией, определяющей указатель.

    Итак, общий формат спецификатора формата:
     % (*) (ширина) (длина) спецификатор
  • vlist: список аргументов для получения входных данных.

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

  • В случае успеха функция vfwscanf () возвращает количество успешно прочитанных аргументов.
  • В случае неудачи возвращается EOF.

Пример: как работает функция vfwscanf ()?

 #include #include #include #include void read( FILE *fp, const wchar_t* format,… ) ( va_list args; va_start (args, format); vfwscanf (fp, format, args); va_end (args); ) int main () ( setlocale(LC_ALL, "en_US.UTF-8"); wchar_t symbol() = L"u0915u0916u0917u0918u0919"; wchar_t names(5)(5) = (L"Ka", L"Kha", L"Ga", L"Gha", L"Nga"); FILE *fp = fopen("example.txt","w+"); for (int i=0; i<5; i++) fwprintf(fp, L"%lc %ls ", symbol(i), names(i)); rewind(fp); wchar_t ch, str(5); for (int i=0; i<5; i++) ( read(fp, L"%lc %ls ", &ch, str); wprintf(L"%lc - %ls", ch, str); ) fclose(fp); return 0; )

Когда вы запустите программу, возможный результат будет:

 क - Ка ख - Кха ग - Га घ - Га ङ - Нга

Интересные статьи...