C/Podstawowe procedury wejścia i wyjścia: Różnice pomiędzy wersjami

Z Wikibooks, biblioteki wolnych podręczników.
< C
Usunięta treść Dodana treść
Derbeth (dyskusja | edycje)
m - niepotrzebny link wsteczny, drobne
Linia 1: Linia 1:
<noinclude><small>< [[C]]</small></noinclude>

== Wejście/wyjście ==
== Wejście/wyjście ==


Linia 11: Linia 9:
scanf()
scanf()
żeby było jasne, że chodzi o funkcję, a nie o coś innego.
żeby było jasne, że chodzi o funkcję, a nie o coś innego.

Wyżej wymienione funkcje to jedne z najczęściej używanych funkcji w C - pierwsza służy do wypisywania danych na ekran, natomiast druga do wczytywania danych z klawiatury.


== Podstawowe funkcje wejścia/wyjścia z biblioteki stdio ==
== Podstawowe funkcje wejścia/wyjścia z biblioteki stdio ==

Wersja z 15:14, 19 lis 2006

Wejście/wyjście

Komputer byłby całkowicie bezużyteczny, gdyby użytkownik nie mógł się z nim porozumieć (tj. wprowadzić danych lub otrzymać wyników pracy programu). Programy komputerowe służą w największym uproszczeniu do obróbki danych - więc muszą te dane jakoś od nas otrzymać, przetworzyć i przekazać nam wynik.

Takie wczytywanie i "wyrzucanie" danych w terminologii komputerowej nazywamy wejściem (input) i wyjściem (output). Bardzo często mówi się o wejściu i wyjściu danych łącznie - input/output, albo po prostu I/O.

W C do komunikacji z użytkownikiem służą odpowiednie funkcje. Zresztą, do wielu zadań w C służą funkcje. Używając funkcji, nie musimy wiedzieć, w jaki sposób komputer wykonuje jakieś zadanie, interesuje nas tylko to, co ta funkcja robi. Funkcje niejako "wykonują za nas część pracy", ponieważ nie musimy pisać być może dziesiątek linijek kodu, żeby np. wypisać tekst na ekranie (wbrew pozorom - kod funkcji wyświetlającej tekst na ekranie jest dość skomplikowany). Jeszcze taka uwaga - gdy piszemy o jakiejś funkcji, zazwyczaj podając jej nazwę dopisujemy na końcu nawias:

printf()
scanf()

żeby było jasne, że chodzi o funkcję, a nie o coś innego.

Wyżej wymienione funkcje to jedne z najczęściej używanych funkcji w C - pierwsza służy do wypisywania danych na ekran, natomiast druga do wczytywania danych z klawiatury.

Podstawowe funkcje wejścia/wyjścia z biblioteki stdio

W C jest wiele różnych funkcji umożliwiających komunikację programu z użytkownikiem. Jedna z najprostszych, a zarazem najbardziej wszechstronnych funkcji wyjścia została użyta w przykładzie "Hello World!"; na początku kodu w tym przykładzie użyliśmy standardowej biblioteki stdio.h. Poniżej omówienie funkcji wejścia/wyjścia zawartych w tej bibliotece.

Funkcja wyjścia printf()

Jest to najczęściej używana funkcja wyjścia. Przyjrzyjmy się ponownie kodowi programu "Hello, World!".

#include <stdio.h>

int main(void)
{
  printf("Hello, world!\n");
  return 0;
}

Po skompilowaniu i uruchomieniu, program wypisze na ekranie:

Hello, world!

Ten tekst na ekranie wyświetliła właśnie funkcja printf(). Funkcja wykonuje pewne zadanie, jednak używając funkcji nie musimy wiedzieć, jak ona działa, "co ma w środku" - nas interesuje tylko efekt jej działania, oraz jak tej funkcji używać (funkcje możemy również sami napisać, ale o tym w dalszej części podręcznika).

W naszym przykładowym programie, żeby funkcja printf() wypisała tekst na ekranie, umieściliśmy w nawiasie przy funkcji, nasz tekst w cudzysłowiu. Tekst pomiędzy cudzysłowami jest to ciąg znakowy, lub po prostu ciąg (także używa się terminu łańcuch) - po angielsku string; natomiast to co umieszczamy w nawiasie funkcji, jest to jej argument. "\n" powoduje przejście do nowej linii. Zatem:

  • żeby wypisać tekst na ekranie za pomocą funkcji printf(), należy podać jako argument ciąg znakowy.

Więcej o funkcji printf()

Funkcja puts()

Inną funkcją wyjścia jest funkcja puts(). W przeciwieństwie do printf() nie formatuje ona wyświetlanego tekstu, przez co jest szybsza. Jej użycie jest bardzo proste:

#include <stdio.h>

int main ()
{
  puts("Hello world!");
  return 0;
}

W przeciwieństwie do funkcji printf() funkcja puts() powoduje automatyczne przesunięcie kursora do następnego wiersza, dlatego też na końcu napisu nie musimy umieszczać znaku '\n'. Więcej o funkcji puts()

Funkcja wejścia scanf()

Teraz pomyślmy o sytuacji odwrotnej. Tym razem to użytkownik musi powiedzieć coś programowi. W poniższym przykładzie program podaje kwadrat liczby, podanej przez użytkownika:

#include <stdio.h>

int main ()
{
  int liczba = 0;
  printf ("Podaj liczbę: ");
  scanf ("%d", &liczba);
  printf ("%d*%d=%d\n", liczba, liczba, liczba*liczba); 
  return 0;
}

Zauważyłeś, że w tej funkcji przy zmiennej pojawił się nowy operator - &. Jest on ważny, gdyż bez niego funkcja scanf() nie skopiuje odczytanej wartości liczby do odpowiedniej zmiennej! Właściwie oznacza przekazanie do funkcji adresu zmiennej, by funkcja mogła zmienić jej wartość. Nie musisz teraz rozumieć, jak to się odbywa, wszystko zostanie wyjaśnione w rozdziale Wskaźniki.

Więcej o funkcji scanf()

Funkcja wejścia getchar()

Jest to bardzo prosta funkcja, wczytująca 1 znak z klawiatury. W systemie Linux z biblioteką GNU Libc po wpisaniu danego znaku należy nacisnąć klawisz enter. W przypadku wpisania kilku znaków do zmiennej przypisany zostanie pierwszy znak, wpisany przez użytkownika.

#include <stdio.h>

int main(void)
{
  char c;
  c = getchar();
  printf("Wpisałeś znak: %c!\n", c);
  return 0;
}

Więcej o funkcji getchar()

Szablon:ProstaNawigacja