Zaimplementuj bezpieczną wersję funkcji gets(), która posiada dodatkowy argument zabezpieczający przed przepełnieniem podanej tablicy znakowej. Funkcja o nazwie readline
, czyta linię ze standardowego wejścia (usuwa ją stamtąd) i umieszcza ją w podanej tablicy znakowej. Ostatni znak linii (znak nowego wiersza - '\n
') zastępuje zerem (znakiem '\0
'). 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()
.
Dane: tablica znakowa t
oraz liczba całkowita n
Wynik: funkcja zwraca wskaźnik do tablicy t
zawierającej wczytany łańcuch znakowy (linia pobrana ze standardowego wejścia ale nie więcej niż n
znaków) lub wartość NULL
w przypadku natrafienia na koniec pliku przy wczytywaniu pierwszego znaku ze strumienia.
Napisz program, który używając napisanej funkcji readline
, czyta kolejno wszystkie linie tekstu ze standardowego wejścia (z klawiatury). Każdorazowo po wczytaniu kolejnej linii tekstu jest ona wyświetlana na standardowym wyjściu (na ekranie).
Dodaj do programu z poprzedniego zadania funkcję o nazwie wordcount
, która dla podanego łańcucha zwraca ilość wyrazów umieszczonych w łańcuchu. Zakładamy, że wyrazem jest ciąg znaków składający się wyłącznie z liter. Każdy inny znak niż litera stanowi separator wyrazów.
Dane: łańcuch s
Wynik: liczba całkowita określająca ilość wyrazów w łańcuchu s
.
Zmodyfikuj program z poprzedniego zadania w taki sposób, aby każdą wypisywaną linię tekstu poprzedzał liczbą wyrazów występujących w tym łańcuchu.
Przykład (kolejno podane linie oraz uzyskana odpowiedź programu):
Ala ma kota 3 Ala ma kota Ten program jest bardzo $%^@^&*!^&*# 4 Ten program jest bardzo $%^@^&*!^&*# _W_tym_wierszu_brak_____spacji____ 5 _W_tym_wierszu_brak_____spacji____
Dodaj do programu z poprzedniego zadania funkcję o nazwie odwracanie
, która w podanym łańcuchu znakowym odwraca kolejność liter.
Dane: łańcuch s
Wynik: łańcuch s
, w którym odwrócono kolejność znaków. Wartością zwracaną jest wskaźnik (adres) s
Zmodyfikuj program z poprzedniego zadania w taki sposób, aby wypisywał na ekranie kolejne linie z odwróconą kolejnością liter.
Przykład (kolejno podane linie oraz uzyskana odpowiedź programu):
Ala ma kota 3 atok am alA Ten program jest bardzo $%^@^&*!^&*# 4 Ten program jest bardzo $%^@^&*!^&*# _W_tym_wierszu_brak_____spacji____ 5 ____ijcaps_____karb_uzsreiw_myt_W_ (kajak) 1 )kajak(
str2int
, która zamieni podany łańcuch znakowy na liczbę całkowitąstr2float
, która zamieni podany łańcuch znakowy na liczbę typu float
int2str
, która podaną liczbę całkowitą zamieni na łańcuch