Zadanie zaliczeniowe z laboratorium Pascala i C. ZSI I. 01/02 ------------------------------------------------------------- Zadane: 22-23.05.2002, odbiór: 29.05, 6..06.2002, 2 punkty. Zad 14. (C) --------------- Dany jest typ typedef struct{ char ch; /* Kolejny znak wiadomości */ int nast; /* Numer następnej struktury */ } rekord; Plik dane.dat zawiera "zaszyfrowaną" wiadomość. Poszczególne znaki tej wiadomości są zapisane w strukturach o zanwie rekord (pole ch). Pola nast zawierają numer (w pliku) _struktury_ zawierającej kolejny znak. -1 oznacza, że nie ma następnego znaku. Struktury są numerowane od 0. Numer struktury zawierającej pierwszy znak jest zapisany jako liczba typu int na początku pliku. Zatem plik ma postać | int | struktura nr 0 | struktura nr 1 | .... | struktura nr n | Poszczególne znaki wiadomości należy wypisywać na ekran funkcją putchar.(c) lub putc(c, stdout). Należy wypisać zasyfrowaną wiadomość na ekranie. Uwagi techniczne: 1) Pliki należy otwierać w trybie binarnym (sprawdź, że w trybie tekstowym nie da się prawidłowo odczytać wiadomości). 2) W opcjach kompilatora należy wybrać Word Alignment (sprawdź, że po skompilowaniu z Byte Alignment program nie odczytuje wiadomości). 3) Dostęp bezpośrdni do pliku zapewnia operacja: int fseek(FILE* stream, long ofset, int origin) gdzie origin może mieć jedną z 3 wartości: SEEK_SET, SEEK_CUR lub SEEK_END. 4) Należy używać operatora sizeof, zamiast liczb oznaczających rozmiary typów danych. Uwagi stałe: - programy nie kompilujące się kompilatorami języka C _nie_ będą sprawdzane, niezależnie od tego czy kompilują się kompilatormai C++ (dotyczy to _także_ komentarzy //, których nie ma w C), - pamiętaj, że pliki źródłowe w C mają rozszerzenie .c (a nie .cpp), użycie innego rozszerzenie może spowodować wywołanie kompilatora C++ a nie C, - pamiętaj o zwolnieniu pamięci (!!!), - pamiętaj o włączeniu _wszelkich_ dostępnych ostrzeżeń kompilatora.