plik tekstowy - Robert Arsoba
Transkrypt
plik tekstowy - Robert Arsoba
Podstawy programowania dr inż. Robert Arsoba Ćwiczenie 12 Obsługa plików tekstowych Cel ćwiczenia Celem ćwiczenia jest praktyczne zapoznanie się z zasadami obsługi plików tekstowych z poziomu programów tworzonych w języku C oraz wykształcenie umiejętności stosowania odpowiednich funkcji biblioteki standardowej do obsługi plików tekstowych. Zakres ćwiczenia obejmuje operacje związane z uzyskaniem dostępu do pliku i otwarciem pliku w trybie tekstowym, operacje odczytu z pliku danych tekstowych i zapisu do pliku informacji tekstowych. Przygotowanie się do ćwiczenia • • • Zapoznać się z wykładem dotyczącym obsługi plików. • Zwrócić uwagę na ogólny schemat obsługi pliku. • Przeanalizować czynności występujące w schemacie obsługi pliku i skojarzyć z nimi odpowiednie funkcje biblioteki standardowej dla plików tekstowych. • Ustalić zasady otwierania pliku tekstowego w różnych trybach (do odczytu, do zapisu, do dopisywania na końcu). Zapoznać się z przykładowym programem zamieszczonym w opisie ćwiczenia (program wyświetlający na ekranie zawartość pliku tekstowego). • Przeanalizować kod źródłowy programu. • Zwrócić uwagę na sposób przekazywania parametrów do funkcji main. • Skompilować i uruchomić program, przetestować jego działanie. Zrealizować samodzielnie zadania ćwiczeniowe. • Opracować dla poszczególnych zadań algorytmy w postaci schematów blokowych. • Na podstawie algorytmów utworzyć kod źródłowy programów. Zadania do wykonania 1. Zmodyfikować i rozbudować przykładowy program w taki sposób, aby poprzez parametry wywołania programu (argumenty funkcji main) możliwe było określenie sposobu wyświetlania zawartości pliku tekstowego na ekranie (bez ingerencji w zawartość pliku na dysku): -n numerowanie wierszy, -u zamiana małych liter na duże, -l zamiana dużych liter na małe. Zwrócić uwagę na możliwość łączenia opcji. Przykładowe wywołanie: program –n –u tekst.txt powinno spowodować wyświetlenie na ekranie zawartości pliku tekst.txt dużymi literami z ponumerowanymi wierszami. Materiały przygotowano w ramach projektu „Inżynier pilnie poszukiwany” Strona 1 Podstawy programowania dr inż. Robert Arsoba 2. Napisać program, który przeprowadza statystykę pliku tekstowego, którego nazwa podawana jest jako parametr wywołania programu. Wynikiem działania programu powinny być następujące informacje wyświetlane na ekranie: • całkowita liczba znaków znajdujących się w pliku, • liczba liter znajdujących się w pliku, • liczba cyfr znajdujących się w pliku. 3. Napisać program, który przeprowadza statystykę pliku tekstowego, którego nazwa podawana jest jako parametr wywołania programu. Wynikiem działania programu powinny być następujące informacje wyświetlane na ekranie: • liczba wierszy znajdujących się w pliku, • liczba słów znajdujących się w pliku (przyjąć, że słowo to dowolny ciąg liter zakończony spacją, znakiem tabulatora, znakiem nowego wiersza lub znakiem końca pliku). 4. Napisać program zliczający krotność występowania pewnego słowa w pliku tekstowym. Oba parametry (nazwa przeszukiwanego pliku, poszukiwane słowo) powinny być podawane jako argumenty wywołania programu. Przyjąć podobną definicję słowa jak w zadaniu 3. 5. Napisać program, który poszukuje anagramów angielskiego słowa podanego jako argument wywołania programu. Wykorzystać plik tekstowy o nazwie words.txt (dołączony do ćwiczenia) – jest to słownik zawierający wyrazy języka angielskiego. Wskazówki: anagram to słowo ułożone z tego samego zestawu liter o zmienionej kolejności. Przykładowe anagramy: rain, nair, Iran. Wykorzystać sortowanie znaków, zamianę wszystkich liter w słowie na małe i funkcję biblioteczną strcmp. Wymagana zawartość sprawozdania z ćwiczenia 1. Notatki ze schematami blokowymi algorytmów do zadań. 2. Pliki z kodem źródłowym utworzonych programów. Zalecane źródła wiedzy 1. B. Kernighan, D. Ritchie: „Język ANSI C”, WNT, Warszawa 2001. 2. P. Wróblewski: „Algorytmy, struktury danych i techniki programowania”, Helion, Gliwice 2009. Przykładowy program /* * Wyswietlanie zawartosci pliku tekstowego na ekranie * Robert Arsoba * 1.12.2009 * Wersja 1.0 */ #include <stdio.h> #include <stdlib.h> /* struktura FILE, funkcje getchar, fflush, fopen */ /* fgets, fclose, printf */ /* funkcje exit, system */ Materiały przygotowano w ramach projektu „Inżynier pilnie poszukiwany” Strona 2 Podstawy programowania dr inż. Robert Arsoba FILE *plik; char wiersz[81]; int licznik = 0; /* wskaznik pliku */ /* tablica przechowujaca pojedynczy wiersz z pliku */ /* licznik odczytanych wierszy (zliczanie do 24) */ int main(int argc, char *argv[]) { system("cls"); if (argc != 2) /* sprawdzenie liczby argumentow wywolania programu */ { printf("Wyswietlanie zawartosci pliku tekstowego na ekranie\n"); printf("Wywolanie: PROGRAM <nazwa pliku>\n\n"); system("pause"); exit(1); /* nadaje wartosc zmiennej systemowej ERRORLEVEL */ } if ((plik = fopen(argv[1], "rt")) == NULL) /* otwarcie pliku do odczytu */ { printf("Nie moge otworzyc pliku %s\n\n", argv[1]); system("pause"); exit(2); } while (fgets(wiersz, 80, plik) != NULL) /* odczyt wierszami do konca pliku */ { printf("%s", wiersz); /* wyswietlenie na ekranie odczytanego wiersza */ if (++licznik == 24) /* zwiekszenie i sprawdzenie licznika wierszy */ { printf("Nacisnij klawisz ENTER . . ."); fflush(stdin); /* wyczyszczenie bufora wejsciowego */ getchar(); /* zatrzymanie wyswietlania na ekranie */ licznik = 0; /* wyzerowanie licznika wierszy */ } } fclose(plik); /* zamkniecie pliku */ system("pause"); return 0; } Materiały przygotowano w ramach projektu „Inżynier pilnie poszukiwany” Strona 3