| fscanf | <STDIO.H> |
| scanf | <STDIO.H> |
Składnia:
int fscanf (FILE *stream, const char *format [, adres, ...]); int scanf ( const char *format [, adres, ...]); gdzie: stream - wskaźnik do strumienia, z którego wczytujemy dane. format - łańcuch formatujący wczytywane dane. adres - referencja do 1 lub więcej zmiennych, w których mają być umieszczone wczytane i sformatowane zgodnie z kodem podanym w parametrze format dane. Opis Zwracana wartość:
|
|
Specyfikacja formatu:
% [*] [szerokość] [h|l|L] typKażda specyfikacja musi zaczynać się od znaku % i zawierać co najmniej typ. Pozostałe pola specyfikacji formatu są opcjonalne. Wszystkie pola formatu mają stałą pozycję w łańcuchu formatującym: można je opuścić, ale jeżeli występują, to muszą być podane w kolejności takiej, jak w powyższym zapisie. |
|||||||
| Pole | Opis | ||||||
| * | Znaki są odczytywane zgodnie z formatem, ale nie są zapamiętywane. Dla takiej specyfikacji nie ma potrzeby podawania zmiennej, w której ma on być umieszczony. Pole używane do odczytania danych z pliku z pominięciem niektórych informacji. | ||||||
| szerokość | Maksymalna ilość znaków, która ma być odczytana dla wyliczenia wartości zmiennej. | ||||||
| h|l|L | Modyfikacja domyślnych wartości dla pola typ:
|
||||||
| typ | Typ konwersji argumentu:
|
||||||
|
Przykład fscanf:
#include <stdio.h>
int main(void)
{ int i;
printf("Podaj dowolną liczbę całkowitą: ");
if (fscanf(stdin, "%d", &i)) //wczytanie liczby
printf("Liczba wczytana poprawnie: %i\n", i);
else
fprintf(stderr, "Błąd wczytania liczby całkowitej.\n");
return 0;
}
Przykład scanf:
#include <stdio.h>
int main(void)
{ char tekst [ 50 ];
int c;
long c_long;
float f;
long double f_long;
printf("Podaj dowolny tekst do 50 znaków: ");
scanf("%50s", &tekst); // wczytywanie tekstu
fflush(stdin); // wyczyszczenie z ewentualnych błędów
printf("\nPodałeś: %s\n", tekst);
printf("\nPodaj 2 liczby całkowite: ");
scanf("%d %D", &c, &c_long); // wczytywanie liczb całkowitych
fflush(stdin); // wyczyszczenie z ewentualnych błędów
printf("\nPodałeś: %d i &ld\n", c, c_long);
printf("\nPodaj 2 liczby rzeczywiste: ");
scanf("%f %Lf", &f, &f_long); // wczytywanie liczb rzeczywistych
fflush(stdin); // wyczyszczenie z ewentualnych błędów
printf("\nPodałeś: %f i &Lf\n", f, f_long);
printf("\nPodaj nazwisko: ");
scanf("%[A-Za-z]", &tekst); // ograniczenie wczytywania do liter
fflush(stdin); // wyczyszczenie z ewentualnych błędów
printf("\nPodałeś: %s\n", tekst);
return 0;
}
|