PodstawyProgramowania W11, Studia
[ Pobierz całość w formacie PDF ]
//-->PODSTAWYPROGRAMOWANIAWykład 11PROWADZĄCY: dr inż. Marcin GłowackiE-Mail:Marcin.Glowacki@pwr.wroc.plPok.907 C-5Wrocław 2014WYKŁAD 11 (2014)Podstawy programowania 1(dr.inżMarcin Głowacki)211.OPERACJE NAPLIKACHCZYM JEST PLIK ?NagłówekaktualnapozycjaENDkierunekPLIKidentyfikowany jest w każdym systemie operacyjnym w postacinazwy.PLIKjestsekwencyjnyw kierunku od początku do końca pliku.Przy zapisie iprzy odczycie – operacje te odbywają się naaktualnej pozycji pliku.Odczyt izapis danychprzesuwa automatycznie pozycjęw plikudo przodu.PLIKprzechowuje dane ookreślonych typach:plikitekstowe,zawierające znaki char,- podczas dostępu następujekonwersja znaków specjalnych na odpowiednie dla systemu operacyjnego,np. w MSDOS znaki New Line konwertuje na <CR><LF>; inny znak końcapliku.plikibinarne,z treścią binarną – brak jakichkolwiek konwersji.W bibliotece:fstreammamy obiekty związane z plikami:#include <fstream>domyślnie do odczytu:ifstreamdomyślnie do zapisu:ofstreamUWAGA:TAK naprawdę to ma jedynie znaczenie tylko jeśli nie sązdefiniowane flagi. Wtedy działają domyślne ustawienia dlaifstream–odczyt iofstream– zapis.FAZA I:Otwarciepliku do odczytu lub zapisu+Sprawdzeniepoprawności operacjiDefiniujemy odpowiednie obiekty i używamy je jakostrumienie.Zawsze należy sprawdzić, czy plik został poprawnie otwarty.FAZA II:Zapislubodczyt(przesunięcia)Do zapisu w pliku i odczytu używamy operatorów:<< >>(jak przystrumieniach).FAZA III:ZamknięcieplikuWYKŁAD 11 (2014)Podstawy programowania 1(dr.inżMarcin Głowacki)3Użycie://Otwarcie do odczytuifstreamplik_in(“filename”);//strumieńplik_indo odczytuifstreamplik_in(“filename”,flagi);//strumieńplik_indo odczytu//Otwarcie do zapisuofstreamplik_out(“filename”);//strumieńplik_outdo zapisuofstreamplik_out(“filename”,flagi);//strumieńplik_outdo zapisuUWAGA:Obowiązkowo sprawdzenie czy plik poprawnie otwarty:if (!plik){cerr<<”Blad otwarcia pliku !”;...}FLAGItrybu otwierania pliku:FlagainoutappatetruncbinaryZnaczenieOtwarcie do czytania (domyślne dlaifstream)Otwarcie do zapisu (domyślne dlaofstream)Zawsze dopisuj na końcu plikuUstaw pozycje na koniec pliku ("at end")Usuń poprzednią zawartość plikuNie konwertuj znaków specjalnychKombinacje FLAGi ich znaczenie:FlagiZnaczenieCzyta (plik też musi istnieć)inoutout | truncout | appin | outin | out | truncCMode"r""w""w""a""r+""w+"Czyści zawartość i zapisuje (tworzy jeśli trzeba)Czyści zawartość i zapisuje (tworzy jeśli trzeba)Dołącza na końcu (tworzy jeśli trzeba)Czyta i zapisuje; pozycja na początku pliku (plik musi istnieć)Czyści, czyta i zapisuje (tworzy jeśli trzeba)WYKŁAD 11 (2014)Podstawy programowania 1(dr.inżMarcin Głowacki)4Przykład:ifstreamplik_in(“filename”,in|binary);//otwarcie w trybie binarnymofstreamplik_in(“filename”,out|binary|app);Co się dzieje podczas otwierania pliku ?ofstream*plikWsk=new ofstream(”Nazwa_pliku");// przetwarzanie danych i wysyłanie do plikudeleteplikWsk;//zamykanie plikuWYKŁAD 11 (2014)Podstawy programowania 1(dr.inżMarcin Głowacki)5PRZYKŁAD:Program zapisuje dane do pliku, a następnie czyta te dane z //pliku#include <iostream>#include <fstream>#include <string>using namespace std;voidfnZapisz(ofstream&Plik){char x[]="abc",y[]="xyz";int a=100;cout<<"Zapisuje do pliku:\n";Plik<<x<<''<<a<<' '<<y<<endl;//zapis do plikucout<<x<<' '<<a<<' '<<y<<endl; //kontrolnie na ekran}voidfnOdczyt(ifstream&Plik){char x[4],y[4];int a;cout<<"Odczytuje z pliku:\n";Plik>>x>>a>>y;//odczyt z plikucout<<x<<' '<<a<<' '<<y<<endl; //kontrolnie na ekran}int main(){charNazwa[257];cout<<"Podaj nazwe pliku do zapisu i odczytu: ";cin.getline(Nazwa,sizeof(Nazwa));ofstreamplik_zap(Nazwa);//otwarcie pliku do zapisuif (!plik_zap) { //może być też: if(plik_zap.fail())cerr <<"Pliku nie udało się otworzyć !"<<endl;return 1;} else {fnZapisz(plik_zap);plik_zap.close();}ifstreamplik_dane(Nazwa);//otwarcie pliku do odczytuif (!plik_dane) {cerr <<"Pliku nie udało się otworzyć !"<<endl;return 1;} else {fnOdczyt(plik_dane);plik_dane.close();}return 0;}
[ Pobierz całość w formacie PDF ]