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

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

fscanf () прототип

 int fscanf (ФАЙЛ * поток, const char * формат,…);

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

Это определено в заголовочном файле.

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

  • stream: Поток входного файла для чтения данных.
  • format: Указатель на строку символов с завершающим нулем, которая указывает, как читать ввод. Он состоит из спецификаторов формата, начинающихся с%.

    Строка формата состоит из следующих частей:

    • Non whitespace charactersкроме%, каждый из которых потребляет один идентичный символ из входного потока. Это может привести к сбою функции, если следующий символ в потоке не окажется равным.
    • Whitespace character: Все следующие друг за другом пробельные символы рассматриваются как одиночные пробельные символы. Далее, ' n', ' t' и '' считаются одинаковыми.
    • Conversion specification: Имеет следующий формат:
      • Начальный символ%, указывающий начало
      • Необязательный *, называемый символом подавления присваивания. Если этот символ присутствует, fscanf () не присваивает результат ни одному аргументу приема.
      • Необязательное положительное целое число, указывающее максимальную ширину поля. Он определяет максимальное количество символов, которое fscanf () может использовать при выполнении преобразования, указанного в текущей спецификации преобразования.
      • Необязательный модификатор длины, определяющий размер принимающего аргумента.
      • Спецификатор формата преобразования.
        Описатель формата Описание
        % Соответствует буквальному%
        c Соответствует одному или нескольким символам. Если ширина определена, точно соответствует ширине символов.
        s Соответствует последовательным непробельным символам. Если ширина определена, соответствует точно символам ширины или до тех пор, пока не будет найден первый пробел.
        (набор) Соответствует непустой последовательности символов из данного набора символов. Если присутствует в начале набора, то совпадают все символы, не входящие в набор.
        d Соответствует десятичному целому числу.
        я Соответствует целому числу.
        о Соответствует восьмеричному целому числу без знака.
        X или x Соответствует шестнадцатеричному целому числу без знака.
        ты Соответствует десятичному целому числу без знака.
        A или a, E или e, F или f, G или g Соответствует числу с плавающей запятой.
        п Возвращает количество прочитанных символов.
        п Соответствует последовательности символов, определенной реализацией, определяющей указатель.
    Итак, общий формат спецификатора формата: %(*)(width)(length)specifier
  • …: Другие дополнительные аргументы для получения данных. Они появляются в последовательности согласно спецификатору формата.

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

  • В случае успеха fscanf()функция возвращает количество успешно назначенных аргументов приема.
  • Если соответствующий сбой происходит до того, как был назначен первый принимающий аргумент, возвращается ноль.
  • Если ошибка ввода происходит до того, как был назначен первый аргумент приема, возвращается EOF.

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

 #include int main () ( FILE *fp; char name(50); int age; fp = fopen("example.txt","w"); fprintf(fp, "%s %d", "Tim", 31); fclose(fp); fp = fopen("example.txt","r"); fscanf(fp, "%s %d", name, &age); fclose(fp); printf("Hello %s, You are %d years old", name, age); return 0; )

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

 Привет Тим, тебе 31 год

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