This is an old revision of the document!
(dla dociekliwych)
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:
Nagłówki funkcji języka C służących do obsługi wejścia/wyjścia znajdują się w pliku nagłówkowym stdio.h
.
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: int printf ( const char * format, ... );
Przykład:
printf("Stan konta #%d wynosi %f zlotych.\n", 1, saldo);
"Stan konta wynosi %.2f zlotych.\n"
– łańcuch sterujący \n
oznacza przejście do nowej linii)%d
, %.2f
– specyfkatory konwersji1, saldo
– lista wyrażeń
Tekst ograniczony cudzysłowami (
"..."
) to łańcuch znaków. Na razie pozostanie on dla Ciebie czarną magią, zajmiemy się tym zagadnieniem za parę zajęć… Na chwilę obecną po prostu powiedz sobie Aha, stosując printf() muszę na początku wpisać tekst w cudzysłowach!
Podstawowe specyfikatory konwersji:
specyfikator | typ wartości |
---|---|
%c | char |
%d | int |
%f | float , double |
Podstawowe opcje formatowania:
%8d
)%.3f
)
W domu zapoznaj się dokładniej z dokumentacją funkcji printf(). Zobacz, jakie inne specyfikatory i opcje formatowania udostępnia ta funkcja – otrzymywanie czytelnych wyników działania programu to podstawa sukcesu
Sprawdź, co zostanie wypisane w przypadku użycia nieodpowiednich specyfikatorów konwersji:
#include <stdio.h> #include <stdlib.h> int main() { int num = 300; float nf = 3.0f; printf("%d %c\n", num, num); printf("%f %lf\n", num, num); printf("%f %d\n", nf, nf); return 0; }
Upewnij się, że na końcu łańcucha sterującego znajduje się znak nowej linii
\n
(inaczej może się zdarzyć, że tekst do wyświetlenia utknie w buforze).
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 konwersji są analogiczne do wykorzystywanych w funkcji
printf()
, z tym że scanf()
dodatkowo posiada %lf
do wczytywania wartości typu double
.
Przykład:
W przypadku “dziwnego zachowania” programu podczas odczytu danych zaglądnij najpierw do FAQ.
Wczytaj trzy liczby zmiennoprzecinkowe przy pomocy funkcji scanf()
. Wypisz ich sumę oraz średnią. Dobierz odpowiednie specyfikatory konwersji pod kątem typów użytych zmiennej.
Napisz program, który zamieni wczytaną wartość w dolarach na waluty:
Wczytana wartość jest typu całkowitego. Obliczone wartości nowych walut mają być tak sformatowane, aby liczba była wyświetlona z dwoma miejscami po przecinku, a cała liczba zajmowała 7 pól.
Napisz program, który wczyta znak z klawiatury, a następnie wyświetli jego wartość w kodzie ASCII.