'A'
odpowiada wartości całkowitej z kodu ASCII, np. znak 'A'
to 65 a znak '\n
' (nowa linia) ma wartość 10'printf()
i scanf()
znaki formatujemy za pomocą %c
Poniższy przykład wyświetla wartość odpowiadającą znakowi 'A
' oraz znak odpowiadający liczbie 'A'+1
.
#include<stdio.h> int main() { char znak = 'A'; printf("%c %d\n", znak, znak); printf("%c %d\n", znak+1, znak+1); printf("%c %d\n", 42, 42); }
Program wyświetli następujący komunikat:
A 65 B 66 * 42
getchar()
zwraca pojedynczy znak pobrany ze standardowego wejścia (z terminala) lub wartość EOF
, gdy napotka koniec strumienia (end of file)EOF
uzyskujemy wciskając Ctrl+d
(Unix/Linux) lub Ctrl+z
(MS Windows) putchar(int a)
wypisuje pojedynczy znak na standardowym wyjściugetchar()
i putchar()
zadeklarowane są w pliku stdio.h
Przykład:
Powyższy program kopiuje na wyjście wszystkie znaki wprowadzone na wejściu. Program działa aż do momentu napotkania końca strumienia (pliku). Stosując przekierowanie strumienia wejściowego, można powyższy program wykorzystać do wyświetlenia zawartości dowolnego pliku, np. wydając w terminalu polecenie:
$ program < plik_wejsciowy
Przekierowując wyjście z programu do pliku możemy skopiować dowolny plik
$ program < plik_wejsciowy > plik_docelowy
Przykład:
Poniższy program zamienia małe litery od a
do z
na duże litery od A
do Z
.
#include <stdio.h> int male_na_duze(int znak) { if ( znak >= 'a' && znak <= 'z' ) { return znak - ('a' - 'A'); } return znak; } int main() { int a; while( (a = getchar()) != EOF ) { a = male_na_duze(a); putchar(a); } return 0; }
Plik nagłówkowy ctype.h
zawiera deklaracje funkcji służących do klasyfikacji znaków.
Zobacz: ctype.h
Oto lista wybranych funkcji z ctype.h
isalpha() | czy znak przekazany jako argument literą alfabetu |
isdigit() | czy znak przekazany jako argument jest cyfrą |
isalnum() ' | czy znak przekazany jako argument jest cyfrą lub literą alfabetu |
isprint() | czy znak przekazany jako argument jest znakiem drukowalnym |
isspace() | czy znak przekazany jako argument jest białym znakiem |
islower() | czy znak przekazany jako argument jest małą literą alfabetu |
isupper() | czy znak przekazany jako argument jest dużą literą alfabetu |
tolower() | zwraca znak zamieniony z dużej litery na małą |
toupper() | zwraca znak zamieniony z małej litery na dużą |
Przykład
Poniższy przykład zawiera program realizujący zamianę znaków z małych na duże z użyciem funkcji zadeklarowanych w ctype.h
.
#include <stdio.h> #include <ctype.h> int main() { int a; while( (a = getchar()) != EOF ) { if ( islower(a) ) a = toupper(a); putchar(a); } return 0; }
Napisz program, który po wczytaniu tekstu ze standardowego wejścia wyświetla następujące informacje:
a-z
,A-Z
,0-9
.
Zakładamy, że wyrazem jest ciąg znaków oddzielony przynajmniej jednym białym znakiem,
tj. spacją, znakiem nowej linii '\n'
lub znakiem tabulacji '\t'
.
Takie wyrazy nie muszą składać się wiec tylko z liter. Zwróć uwagę na to, że w tekście
mogą wystąpić wyrazy oddzielone kilkoma następującymi po sobie białymi znakami.
Przykładowo dla wprowadzonego teksu:
Ala ma kota, a KOT ma Ale i zyc bez siebie nie moga wcale. 123 (!@#)
program wypisze
znaki 69 wyrazy 16 linie 3 duze litery 5 male litery 38 cyfry 3
Napisz program, który po wczytaniu tekstu ze standardowego wejścia wyświetli listę wszystkich liter
alfabetu od a
do z
, które występują w tekście wraz z ilością wystąpień każdej z liter.
Wynik nie powinien rozróżniać wielkości liter, tj. zarówno mała litera 'a
' oraz duża litera 'A
'
traktowane są jako wystąpienie tej samej litery alfabetu.
Przykładowo dla wprowadzonego teksu:
Ala ma kota, a KOT ma Ale i zyc bez siebie nie moga wcale. 123 (!@#)
program wypisze
a 9 b 2 c 2 e 6 g 1 i 4 k 2 l 3 m 3 n 1 o 3 s 1 t 2 w 1 y 1 z 2
Napisz program, który przetransformuje tekst podany na standardowym wejściu do postaci hack mowy (zob. leet speak) zgodnie regułami podanymi w poniższej tabeli. Wszystkie pozostałe znaki pozostają w swojej niezmienionej formie. Wynik wypisz na standardowym wyjściu.
Znak wejściowy | Znak wyjściowy |
---|---|
a A | 4 |
b B | 8 |
c C | ( |
e E | 3 |
g G | 6 |
i I | | (kreska pionowa) |
l L | 1 (cyfra jeden) |
o O | 0 (cyfra zero) |
s S | 5 |
z Z | 2 |
Przykładowo dla wprowadzonego teksu:
Ala ma kota, a KOT ma Ale i zyc bez siebie nie moga wcale. 123 (!@#)
program wypisze
414 m4 k0t4, 4 K0T m4 413 | 2y( 832 5|38|3 n|3 m064 w(413. 123 (!@#)