stdio.h

sscanf

Описание

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

Функцията чете буфера str и съхранява прочетената информация в променливите от списъка с аргументи. Функцията чете всички вградени типове данни и автоматично ги превръща в подходящия формат.

Параметри

const char *str

Буфер от който ще бъдат прочетени данните.

const char *format

Контролния низ е съставен от нула или повече нормални символи и директиви за прочитане. Всяка директива за прочитане започва с знака %.

Типове директиви за прочитане

Директива Описание
%% Прочита %
%c Прочита символ
%d Прочита int със знак
%i Прочита int със знак
%e Прочита се в научна нотация е
%f Прочита число с плаваща запетая
%g Прочита с по краткото % е или %f
%o Прочита числото в осмично представяне
%s Прочита низ
%u Прочита unsigned int
%x Прочита число в 16-тичен формат с малки букви
%p Прочита указател
%n Получава целочислена стойност равна на броя прочетени стойности

 Всяка директива за прочитане може да притежава два вида флага. Флагове за дължина и флагове за модифициране.

 Флагове за дължина

Флаг Описание
(дължина) Максимален брой символи за прочитане.
* Максималния брой символи се задава динамично чрез параметър в аргументите.

Флагове за модифициране

Флаг Описание
h Прочита short int параметри. Използва се с целочислиени типове(%d ,%i, %u, %o, %x).
l Прочита long int параметри с целочислени типове(%d ,%i, %u, %o, %x) и разширени низове с %s.
L Прочита long double параметри. Използва се с типове за плаваща запетая (%f, %g, %e).

 

...

Множество от параметри. Броя на параметрите трябва да бъде равен на броя на зададените директиви в контролиращия низ.

Връщани стойности

Функцията връща броя на успешно прочетените и записани в променливи стойности.

Примери

от: adviser at cpp-examples dot com   Свали кода във файл
  1. #include <stdio.h>
  2.  
  3. int  main()
  4. {
  5.     long code;
  6.     char serial[] = "SN/234526";
  7.  
  8.     sscanf(serial, "SN/%d", &code);
  9.  
  10.     printf("Код:%d", code);
  11.  
  12.     return 0;
  13. }
  14. //Отпечатва "Код:234526"
от: adviser at cpp-examples dot com   Свали кода във файл
  1. #include <stdio.h>
  2.  
  3. int  main()
  4. {
  5.     int year;
  6.     char month[32];
  7.     char date[32] = "january-2009";
  8.     sscanf(date, "%[a-z]-%d", month, &year);
  9.     printf("Прочетени стойности: %s, %d", month, year);
  10.  
  11.     return 0;
  12. }
  13. //Отпечатва "Прочетени стойности: january, 2009"

Виж също

scanf - чете форматиран вход от stdin
fscanf - чете форматиран вход от файл
vscanf - прочита форматиран вход
vfscanf - прочита форматиран вход
vsscanf - прочита форматиран вход