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

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

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

прототип vfwscanf ()

 int vfwscanf (ФАЙЛ * потік, формат const wchar_t *, список va_list vlist);

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

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

  • потік: вхідний потік файлу для читання даних.
  • формат: вказівник на широкий рядок символів із нульовим кінцем, який визначає спосіб читання вводу. Він складається із специфікаторів формату, що починаються з%.
    Рядок форматування складається з таких частин:
    • Непробільні символи, за винятком%, кожен з яких споживає один ідентичний символ із вхідного потоку. Це може спричинити збій функції, якщо наступний символ у потоці не порівнює.
    • Пробіл: Усі послідовні пробіли розглядаються як одинарні пробіли. Крім того, ' n', ' t' та '' вважаються однаковими.
    • Специфікація перетворення: Вона має такий формат:
      • Початковий символ%, який визначає початок
      • Необов’язковий *, який називається символом, що пригнічує призначення. Якщо цей символ присутній, vfwscanf () не призначає результат жодному аргументу, що отримує.
      • Необов’язкове додатне ціле число, яке вказує максимальну ширину поля. Він визначає максимальну кількість символів, яку vfwscanf () дозволено використовувати при виконанні перетворення, зазначеному поточною специфікацією перетворення.
      • Необов’язковий модифікатор довжини, що вказує розмір приймаючого аргументу.
      • Специфікатор формату перетворення.
    Специфікатори формату
    Специфікатор формату Опис
    % Відповідає літералу%
    c Відповідає одному символу або декільком символам. Якщо ширина визначена, точно відповідає символам ширини.
    s Відповідає послідовним символам, що не є пробілами. Якщо ширина визначена, вона точно відповідає символам ширини або до тих пір, поки не буде знайдено перший пробіл.
    (встановити) Відповідає непорожній послідовності символів із заданого набору символів. Якщо присутній на початку набору, то всі символи, що не входять у набір, збігаються.
    d Відповідає десятковому цілому числу.
    i Відповідає цілому числу.
    o Відповідає цілому вісімковому цілому без знака.
    X або x Відповідає цілому шістнадцятковому числу без знака.
    u Відповідає беззнаковому десятковому цілому числу.
    A або a, E або e, F або f, G або g Відповідає числу з плаваючою комою.
    п Повертає кількість прочитаних символів.
    стор Відповідає визначеній реалізації послідовності символів, що визначає покажчик.

    Отже, загальним форматом специфікатора формату є:
     Специфікатор% (*) (width) (length)
  • 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; )

Після запуску програми можливим результатом буде:

 क - Ka ख - Kha ग - Ga घ - Gha ङ - Nga

Цікаві статті...