Функции библиотеки C -sscanf()

Стандартная библиотека C - <stdio.h>

Описание

Функции библиотеки Cint sscanf(const char *str, const char *format, ...)Чтение форматированного ввода из строки.

Объявление

Ниже приведено объявление функции sscanf().

int sscanf(const char *str, const char *format, ...)

Параметр

  • str-- Это строка C, из которой функция извлекает данные.
  • format-- Это строка C, содержащая один или несколько из следующих элементов:пробельные символы, непробельные символыиспецификаторы формата。
    Спецификатор формата имеет вид[=%[*][width][modifiers]type=], с подробным объяснением ниже:
ПараметрОписание
*Это необязательная звёздочка, означающая, что данные считываются из потока, но могут быть проигнорированы, т. е. не сохраняются в соответствующем аргументе.
widthЗадаёт максимальное количество символов, которые нужно прочитать в текущей операции чтения.
модификаторыЗадаёт размер, отличный от размера для целого (для d, i и n), беззнакового целого (для o, u и x) или числа с плавающей запятой (для e, f и g), для данных, на которые указывает соответствующий дополнительный аргумент: h : short int (для d, i и n) или unsigned short int (для o, u и x) l : long int (для d, i и n), или unsigned long int (для o, u и x), или double (для e, f и g) L : long double (для e, f и g)
typeСимвол, задающий тип считываемых данных и способ их чтения. Подробности см. в следующей таблице.

Спецификаторы типа sscanf:

TypeКвалифицирующий вводтип аргумента
cОдиночный символ: читает следующий символ. Если указана ширина, отличная от 1, функция читает width символов и сохраняет их в последовательных позициях массива, переданного как аргумент. Нулевой символ в конце не добавляется.char *
dДесятичное целое: знак + или - перед числом необязателен.int *
e,E,f,g,GЧисло с плавающей запятой: содержит десятичную точку, необязательный ведущий знак + или -, необязательный завершающий символ e или E и десятичные цифры. Два допустимых примера: -732.103 и 7.12e4float *
oВосьмеричное целое число.int *
sСтрока. Считывает последовательные символы до тех пор, пока не встретится пробельный символ (пробельными символами могут быть пробел, новая строка и табуляция).char *
uБеззнаковое десятичное целое число.unsigned int *
x,XШестнадцатеричное целое число.int *

Дополнительные аргументы-- Эта функция принимает ряд указателей в качестве дополнительных аргументов, каждый из которых указывает на объект, тип которого задан соответствующим тегом % в строке формата. Аргументы идут в том же порядке, что и теги %.

Для каждого спецификатора формата в строке формата, который извлекает данные, следует указать дополнительный параметр. Если вы хотите сохранить результат операции sscanf в обычной переменной, перед идентификатором следует поставить оператор взятия адреса (&), например:

int n;
sscanf (str,"%d",&n);

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

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

Пример

В следующем примере демонстрируется использование функции sscanf().

Пример

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
   int day, year;
   char weekday[20], month[20], dtm[100];

   strcpy( dtm, "Saturday March 25 1989" );
   sscanf( dtm, "%s %s %d  %d", weekday, month, &day, &year );

   printf("%s %d, %d = %s\n", month, day, year, weekday );
   
   return(0);
}

Давайте скомпилируем и запустим приведённую выше программу, которая выдаст следующий результат:

March 25, 1989 = Saturday

Стандартная библиотека C - <stdio.h>

Другие расширения