User Tools

Site Tools


dydaktyka:cprog:2015:basic_stdio

This is an old revision of the document!


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:

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

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

dydaktyka/cprog/2015/basic_stdio.1444774400.txt.gz · Last modified: 2020/03/25 11:46 (external edit)