Spis treści

Znaki i łańcuchy znaków (stringi)

Znaki w 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);
}

str1.c

Funkcja getchar()

Przykład:

#include <stdio.h>
 
int main()
{
	char a;
 
	while((a=getchar()) != EOF) 
		putchar(a);
 
	return 0;
}

str2.c

Zadanie - Licz znaki

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 

Zadanie - Małe na duże

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

Napisy - łancuchy znakowe

Przykład:

#include <stdio.h>
 
int main()
{
   char *napis = "Ala ma kota\n";
 
   while(*napis != '\0')
   {
      printf(napis);
      napis++;
   }
 
   return 0;
}

str3.c

Zadanie - Czytaj linię

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).

Zadnie - Szyfr cezara

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

Biblioteka string.h

Wybrane funkcje z biblioteki string.h

Biblioteka ctype.h

Wybrane funkcje w biblioteki ctype.h

Zadanie - Cenzura

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 ******** ******.