This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
dydaktyka:cprog:2015:basic_stdio [2015/10/14 00:13] pkleczek utworzono |
— (current) | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Interakcja z użytkownikiem ====== | ||
- | We wszystkich systemach komputerowych do przechowywania informacji służą pliki (//file//). Pliki zawierają powiązane ze sobą wzajemnie informacje. Ponieważ w komputerach wszystkie pliki reprezentowane są jako ciągi bitów pogrupowanych w bajty, język C traktuje plik jako ciąg bajtów, czyli strumień (//stream//). Język C traktuje wszystkie strumienie danych (do/z pliku) i wszystkie pliki dokładnie tak samo. | ||
- | Dodatkowo w C są trzy strumienie plikowe (//file stream//), które są standardowo wstępnie otwierane dla nas: | ||
- | * stdin – standardowe wejście (//standard input//) – do odczytu; zazwyczaj powiązany z klawiaturą | ||
- | * stdout – standardowe wyjście (//standard output//) – do zapisu; zazwyczaj powiązany z monitorem terminala | ||
- | * stderr – standardowe wyjście dla komunikatów o błędach (//standard error//) | ||
- | |||
- | Nagłówki funkcji języka C służących do obsługi wejścia/wyjścia znajdują się w pliku nagłówkowym ''stdio.h''. | ||
- | |||
- | ===== Wypisywanie danych ===== | ||
- | |||
- | Główną funkcja służąca do wypisywania danych na standardowe wyjście (zazw. oznaczające wyświetlanie danych na ekranie terminala) jest ''printf()''. | ||
- | |||
- | [ prototyp funkcji: Zha/63 + przykład użycia wraz z opisem elementów: Zha/64 ] | ||
- | [schemat Pra/87-88] | ||
- | [ pobieżne wprowadzenie do łańcuchów znaków – tyle, ile potrzebne do korzystania z printf() ] | ||
- | podstawowe specyfikatory: %c, %d, %f | ||
- | [w formie tabeli; pozostałe: w dokumentacji funkcji printf()] | ||
- | wyrównanie pola wyjściowego (np. %8d) | ||
- | specyfikator precyzji (np. %.3f) | ||
- | |||
- | W domu zapoznaj się dokładniej z [[http://www.cplusplus.com/reference/cstdio/printf/|dokumentacją funkcji printf()]. | ||
- | |||
- | Sprawdź, co się stanie w przypadku użycia nieodpowiednich specyfikatorów konwersji: | ||
- | |||
- | <code c conversion_errors.c> | ||
- | #include <stdio.h> | ||
- | #include <stdlib.h> | ||
- | |||
- | int main() | ||
- | { | ||
- | int num = 300; | ||
- | printf("%d %c\n", num, num); | ||
- | printf("%f %lf\n", num, num); | ||
- | |||
- | float nf = 3.0f; | ||
- | printf("%f %d\n", nf, nf); | ||
- | |||
- | return 0; | ||
- | } | ||
- | </code> | ||
- | |||
- | Jak sądzisz, dlaczego tak się dzieje? | ||
- | |||
- | :!: Upewnij się, że na końcu łańcucha znaków znajduje się znak nowej linii ''\n'' (inaczej może się zdarzyć, że tekst do wyświetlenia utknie w buforze). | ||
- | |||
- | ===== Odczyt danych ===== | ||
- | |||
- | Główną funkcja służąca do pobierania danych ze standardowego wejścia (zazw. z klawiatury) jest ''scanf()''. | ||
- | |||
- | Funkcja ta zamienia wpisywany tekst na wartości odpowiednich typów zgodnie z zadanymi przez programistę specyfikatorami konwersji. | ||
- | |||
- | ''scanf()'' pobiera wskaźniki do zmiennych (na chwilę obecną nie musisz nic wiedzieć o wskaźnikach, po prostu dodaj symbol ''&'' przed nazwą zmiennej | ||
- | |||
- | podstawowe specyfikatory: %c, %d, %f, %lf |