'A'
odpowiada wartości całkowitej z kodu ASCIIprintf
i scanf
za pomocą %c
Przykład:
#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); }
getchar()
zwraca pojedynczy znak ze standardowego wejścia 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ściuPrzykład:
#include <stdio.h> int main() { char a; while((a=getchar()) != EOF) putchar(a); return 0; }
Napisz program, który po wczytaniu tekstu ze standardowego wejścia wyświetli ilość znaków oraz linii w podanym tekście.
Przykładowo, dla wprowadzonego teksu:
Ala ma kota, a kot ma Alę i żyć bez siebie nie mogą wcale,
program wypisze
znakow 63 linii 2
Napisz program, który zamienia wszystkie małe znaki alfabetu na duże litery, zaś duże - na małe. Wszystkie znaki interpunkcyjne i pozostałe symbole pozostają niezmienione.
Przykład:
AlA mA_kota !231 aLa Ma_KOTA !231
'\0'
) „Ala ma kota”
printf()
za pomocą modyfikatora %s
Przykład:
#include <stdio.h> int main() { char *napis = "Ala ma kota\n"; while(*napis != '\0') { printf(napis); napis++; } return 0; }
Zaimplementuj funkcję o nazwie readline
, która odczytuje pojedynczy wiersz tekstu ze standardowego wiersza i umieszcza go w tablicy znakowej w postaci napisu.
Funkcja ta realizuje bezpieczną wersję funkcji gets(), zabezpieczając procedurę wczytywania tekstu przed możliwością przepełnienia tablicy.
Funkcja nie wczyta więcej niż n
znaków oraz przerywa wczytywanie po napotkaniu końca pliku EOF
.
Do wczytywania kolejnych znaków ze standardowego wejścia użyj funkcji getchar()
.
Ostatni znak linii (znak nowego wiersza - '\n
') nie powinien występować w utworzonym napisie.
Argumenty funkcji: tablica znakowa t
oraz liczba całkowita n
określająca maksymalną liczbę znaków jaka może zostać wczytana do tablicy t
Wartość zwracana: funkcja zwraca wartość EOF (-1), gdy w czasie czytania znaków napotkano koniec pliku, w przeciwnym wypadku wartość zwracaną jest liczba 1
Napisz program, który używając funkcji readline
, czyta kolejno wszystkie linie tekstu ze standardowego wejścia. Każdorazowo po wczytaniu kolejnej linii tekstu jest ona wyświetlana na standardowym wyjściu (na ekranie).
Zaimplementuj funkcję szyfr()
, która zaszyfruje tekst umieszczony w napisie za pomocą szyfru Cezara. Szyfr ten zamienia znaki alfabetu na znaki stojące o 3 pozycje dalej w alfabecie, tzn. a
zamieniane jest na d
, litera b
na e
, itd. Litera z
zamieniana jest na a
, y
na b
, z
na c
. Zamianie ulegają wyłącznie znaki alfabetu (małe a-z
i duże A-Z
).
Argumenty funkcji: tablica znakowa t
zawierająca napis do zaszyfrowania
Wartość zwracana: adres tablicy 't' zawierającej zaszyfrowany tekst
Napisz program, który przeczyta linię tekstu (wykorzystaj do tego funkcję readline()
z poprzedniego zadania) a następnie wypisze jego zaszyfrowaną postać.
Przykład:
Ala ma kota Dkd pd nsxd
Dla chętnych
szyfr()
o możliwość zamiany znaków w tekście na znaki przesunięte o dowolną liczbę całkowitą w alfabecie. Liczba ta podana jest w dodatkowym argumencie funkcji. Znaki w alfabecie zamieniane są cyklicznie. Podanie wartości ujemnej odpowiada przesunięci znaków w przeciwną stronę w alfabecie i w efekcie deszyfrację wiadomości zakodowanej wartością dodatnią. Wybrane funkcje z biblioteki string.h
int strlen(char *napis)
char* strcpy(char *src, char* dest)
int strcmp(char *napis1, char* napis2)
char* strcat(char *src, char* dest)
char* strstr(char *napis, char* wzor)
Wybrane funkcje w biblioteki ctype.h
Napisz funkcję o nazwie cenzura()
, która wyszukuje w podanym napisie pewnego wyrażenia i jeżeli wyrażenie występuje w tekście to znaki tego wyrażenia zostają zamienione na *
, tj. słowo zostaje ocenzurowane.
Argumenty funkcji: dwa napisy, pierwszy zawiera tekst do ocenzurowania a drugi to wyraz, który będzie cenzurowany.
Wartość zwracana: adres tablicy zawierającej ocenzurowany napis
Napisz program, który wypisuje na ekranie kolejne linie tekstu podane przez użytkownika. Jeżeli tekst w danej linii zawiera wyraz abakus
, wtorek
lub czerwony
to tekst zostaje ocenzurowany a na ekranie pojawia się linia w której znaki niepożądanego słowa zostają zastąpione znakiem *
.
Przykład:
We wtorek Adam kupil czerwony abakus. We ****** Adam kupil ******** ******.