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; } |