Programowanie w językach wysokiego poziomu zajęcia nr 2 Elektronika i Telekomunikacja, semestr III rok akademicki 2014/2015
Plan dzisiejszych zajęć Pliki tekstowe 1. Operacje na plikach - wprowadzenie 2. Zapis i odczyt dla plików tekstowych 3. Przykłady odwołań do plików tekstowych 4. Zadania do zrobienia
Operacje na plikach - wprowadzenie Plik: - z punktu widzenia użytkownika jest to zbiór danych na dysku, - z punktu widzenia kompilatora jest to logiczna interpretacja zbioru danych, - w języku C plik niekoniecznie musi oznaczać zbiór na dysku (może być skojarzony z klawiaturą).
Operacje na plikach - wprowadzenie Krok 1 skojarzenie pliku ze zbiorem danych, czyli otwarcie pliku. FILE *zmienna; //wskaźnik pliku Wskaźnik wskazuje na pewną strukturę zadeklarowaną w pliku <stdio.h>. Zawiera ona informacje o pliku, m.in. położenie bufora, rodzaj dostępu do pliku, sygnały o wystąpieniu błędów.
Operacje na plikach - wprowadzenie Do otwarcia pliku służy funkcja fopen_s(). fopen_s(&zmienna, "nazwa_pliku","tryb"); nazwa_pliku nazwa zbioru na dysku, może być razem ze ścieżką dostępu tryb określa sposób dostępu do pliku
Operacje na plikach - wprowadzenie Tryby dostępu do pliku: "r" czytanie "w" zapisywanie jeśli plik nie istnieje - zostanie utworzony jeśli plik istnieje zostanie nadpisany "a" dopisywanie na końcu istniejącego lub na początku nowego "r+" czytanie z możliwością zapisywania "w+" zapisywanie z możliwością czytania "a+" dopisywanie z możliwością czytania
Operacje na plikach - wprowadzenie Rodzaje plików: Pliki tekstowe podzielone na wiersze (linie), z których każdy kończy się znakiem końca wiersza. Cały plik kończy się znakiem końca pliku (EOF). Pliki binarne nie mają określonej struktury Aby otworzyć plik jako binarny, w łańcuchu znaków określającym tryb dostępu na końcu dodajemy literkę "b", np. "rb", "w+b". Bez tego plik jest traktowany jako tekstowy.
Operacje na plikach - wprowadzenie Zamykanie pliku Po zakończeniu pracy z plikiem należy go zamknąć. Służy do tego funkcja fclose. int fclose(zmienna);
Operacje na plikach - wprowadzenie Schemat przetwarzania pliku FILE *plik; fopen_s(&plik,"d:\\student\\plik.txt","rt"); //otwarcie, tekstowy if (plik==null) //kontrola błędów { printf("blad otwarcia pliku\n"); getch(); exit(-1); } /* przetwarzanie pliku zapis lub odczyt */ fclose(plik) //zamknięcie
Zapis i odczyt dla plików tekstowych Czytanie i zapisywanie pojedynczych znaków: fgetc odczytuje z pliku jeden znak nagłówek: int fgetc(file *plik); fputc zapisuje do pliku jeden znak nagłówek: int fputc(char znak, FILE *plik); Przykład: FILE *plik; fopen_s(&plik,"jakis_plik.txt","rt"); char znak = fgetc(plik); fputc(znak,plik);
Zapis i odczyt dla plików tekstowych Czytanie i zapisywanie łańcuchów znaków: fgets czyta z pliku łańcuch znaków o podanej długości lub do końca wiersza, nagłówek: char* fgets(char* linia, int dl, FILE* plik); fputs zapisuje łańcuch znaków do pliku, nagłówek: int fputs(char* linia, FILE *plik); Przykład: FILE *plik; char *linia; fopen_s(&plik, "jakis_plik.txt","rt"); fgets (linia,255,plik); printf("linia z pliku: %s",linia);
Zapis i odczyt dla plików tekstowych Odczyt i zapis sformatowany: fscanf działa tak jak scanf, ale ma dodatkowy parametr, nagłówek: int fscanf(file* plik, const char* format, ); fprintf działa tak jak printf, ale ma dodatkowy parametr, nagłówek: int fprintf(file* plik, const char* format, ); Przykład: FILE *plik; int liczba=21; fopen_s(&plik,"jakis_plik.txt","wt"); fprintf(plik,"liczba zapisana do pliku to %d\n",liczba); fclose(plik);
Przykłady odwołań do plików tekst. Czytanie z pliku znak po znaku: #include <stdio.h> #include <stdafx.h> int main() { char znak; FILE* plik; fopen_s(&plik,"main.c","rt"); while((znak=fgetc(plik))!=eof) printf("%c",znak); fclose(plik); getch(); return 0; }
Przykłady odwołań do plików tekst. Czytanie z pliku linia po linii: #include <stdio.h> #include <stdafx.h> int main() { char linia[255]; FILE* plik; fopen_s(&plik,"main.c","rt"); while(fgets(linia,255,plik)!=null) printf("%s",linia); fclose(plik); getch(); return 0; }
Zadania do zrobienia 1. Dany jest plik tekstowy "przedmioty.txt". Czytaj z pliku linia po linii i wyświetl na ekranie te, które nie zaczynają się od znaku '*'. http://we.pb.edu.pl/~adam_i/dydaktyka/ przedmioty.txt 2. Napisz program, który sporządzi podsumowanie dla danego pliku tekstowego. Program ma czytać z pliku znaki i na koniec wyświetlić: a) ile było znaków, b) ile było znaków bez spacji, c) ile było liter (z podziałem na małe i wielkie), d) ile było cyfr, e) ile było znaków interpunkcyjnych (kropka, przecinek, średnik, itp.), f) ile było pozostałych znaków.
Zadania do zrobienia 3. Wygeneruj tablicę o rozmiarze 3x3 zawierającą liczby losowe. Zapisz ją do pliku tekstowego, a następnie wyświetl zawartość tego pliku na ekranie.
Dziękuję za uwagę