148 rrogramowanie w MATLar
<0 przesunięcie w kierunku początku pliku. wartośćjjoczątkowa może być natomiast zinterpretowana następująco:
‘bof |
lub-1 |
początek pliku, |
‘cof |
lub 0 |
bieżąca pozycja w pliku, |
‘eof |
lub 1 |
koniec pliku. |
Polecenie fseek |
zwraca |
wartość 0 po pomyślnym wykonaniu lub wartość -] |
w przeciwnym przypadku.
ftell - zwraca wartość wskaźnika pozycji pliku. Składnia polecenia jest następująca: 1 położenie_wskaźnika = fte\\(fid)
położenie_wskaźnika zwracane jest w bajtach liczonych od początku plikui Wartość -1 sygnalizuje błąd, o szczegółach którego można się dowiedzieć za pomocą tenor, fid jest liczbą cakowitą zwracaną przez fopen. feof - testuje osiągnięcie końca pliku (jest to wskaźnik końca pliku). feofM zwraca 1 gdy zostanie osiągnięty koniec pliku identyfikowanego przez fidJ W przeciwnym przypadku zwracane jest 0. Wartość wskaźnika końca pliku jest] ustawiana po osiągnięciu końca pliku.
Po uruchomieniu (t0206_25) otrzymuje się:
Nazwa pliku - może byc wraz ze ścieżka Podaj nazwę pliku jb.bin Podaj dane [1:5]
A -
1 2 3 4 5
Ponowne otwarcie pliku do odczytu
Naclsnlj dowolny klawisz
Ustawienie wskaźnika na pozycji 6 Ucząc
od początku pliku
Poczekaj
Gdzie bedzle wskaźnik ? poi ożeni e_wskazn1ka -6
Jaka wartość zostanie odczytana w tej pozycji ? odczytana_wartosc -4
Wyjaśnienie dlaczego odczytana wartość wynosi 4 znajduje się poniżej:
pozycja w pliku bof 12345 67 8 9 lOeof
zawartość pliku 0102030405
wskaźnik pozycji pliku
Rysunek 32.
Napisać m-plik przeznaczony do utworzenia bazy danych książek z podręcznej biblioteki. Informacje o książce powinny zawierać: numer katalogowy książki, nazwisko autora oraz lylul książki. Przyjąć, ze baza danych może zawierać maksymalnie 100 pozycji.
Rozwiązanie
W rozwiązaniu zadania przyjęto, że dane będą zapamiętywane w następującej strukturze:
bibl
-.numer
-.autor
-.tytuł
Wykorzystano ją w następującym m-pliku:
X t0206_26 tworzy bazę danych książek z podręcznej X biblioteki; należy podać numer katalogowy k$1azk1 X autora 1 tytuł książki; można wprowadzić 100 X pozycji
X (c) jb
clę
elear
format compact
dlspfNazwa pliku może zawierać katalog1)
NP-1nput('Podaj nazwę pliku ','s'); disp( * *)
n-1nput(1 Ile książek ? ');
1f (n>-l & n<101) for 1«l:n
b1bl(1).numer-1nput('Numer książki '); bibl(i).autor-input('Autor ' ,'s')i bibl (1).tytuł~1nput( 'Tytuł ','s'); dlspC ') end end
1f (n>-l & n<101)
X NpoNazwa_.pl 1 ku save(NP,'bibl') elself n>100
dlspCHozna wpisać tylko 100 książek ') elself n<0
d1sp('Liczba powinna byc dodatnia ') elself n—O
d1sp(*Dane bez sensu') end elear