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

Podobne dokumenty