stdio.h

fscanf

Описание

int fscanf( FILE *fp, const char *format, ... )

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

Параметри

FILE *fp

Указател към файл върнат от fopen.

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.     int d;
  6.     char s[20];
  7.     FILE *fp;
  8.  
  9.     fp = fopen("test.txt", "w");
  10.     if(fp)
  11.     {
  12.         fprintf(fp, "%d %s", 1024, "test");
  13.         fclose(fp);
  14.     }
  15.  
  16.     fp = fopen("test.txt", "r");
  17.     if(fp)
  18.     {
  19.         fscanf(fp, "%d", &d);
  20.         printf("%d", d);
  21.  
  22.         fscanf(fp, "%s", s);
  23.         printf("%s", s);
  24.     }
  25.  
  26.     return 0;
  27. }
  28. //Отпечатва "1024test"

Виж също

scanf - чете форматиран вход от stdin
sscanf - чете форматиран вход от буфер
vscanf - прочита форматиран вход
vsscanf - прочита форматиран вход
vfscanf - прочита форматиран вход